ArrayList源码学习
本文依照构类定义、造函数、成员变量、方法的顺序进行分析。 一、ArrayList数据结构 通过翻阅源码和《算法》书籍,我们知道ArrayList的底层数据结构就是数组。在源码中通过object elementData[ ]数组来表示了底层结构。我们对ArrayList类的实例的所有操作底层其实都是基于数组的。 二、ArrayList源码分析 2.1 类定义 1 public class ArrayList<E> extends AbstractList<E> 2 implements List<E>, RandomAccess, Cloneable, java.io.Serializable View Code 解释:ArrayList继承AbstractList抽象父类,实现了List接口(规定了List的操作规范)、RandomAccess(可随机访问)、Cloneable(可拷贝,实现该接口,就可以使用Object.clone()方法了)、Serializable(可序列化)。 1)为什么中间要多一个AbastractList抽象父类,是因为这个类中包含了部分通用实现,这样写具体类,比如ArrayList时,只需要专注于本类的具体实现了。 2)在查看了ArrayList的父类AbstractList也实现了List<E>接口