一、概述
AbstractList是一个抽象类,既继承了AbstractCollection抽象类,拥有AbstractCollection的默认实现方法,同时也实现了List接口,为List接口方法添加了默认实现和拓展。其子类为ArrayList、AbstractSequentialList、Vector,关系示意图如下:
二、源码
2.1 说明
此类提供了列表接口的框架实现,以最小化实现由“随机访问”数据存储(如数组)支持的接口所需的工作量。对于顺序访问数据(如链表),应优先使用AbstractSequentialList而不是此类。
要实现一个不可修改的列表,程序员只需扩展这个类,并提供get(int)和size()方法的实现。
为了实现一个可修改的列表,程序员必须另外重写set(int,E)方法(否则会抛出一个UnsupportedOperationException)。如果列表大小可变,程序员还必须重写add(int,E)和remove(int)方法。
根据集合接口规范中的建议,程序员通常应提供void(无参数)和集合构造函数。
与其他抽象集合实现不同,程序员不必提供迭代器实现;迭代器和列表迭代器由此类在“随机访问”方法之上实现:get(int)、set(int,E)、add(int,E)和remove(int)。
如果正在实现的集合允许更高效的实现,则这些方法中的每一个都可能被重写。
2.2 默认实现方法
偷个懒搬运一个博主的源码解析:
https://blog.csdn.net/u011240877/article/details/52829912