深入解析Java中的ArrayList
一、概述 ArrayList底层使用的是数组。是List的可变数组实现,这里的可变是针对List而言,而不是底层数组。 数组有自身的特点,不变性,一旦数组被初始化,那么其长度就固定了,不可被改变。这就导致了ArrayList中的一个重要特性:扩容。 二、源码解析 2.1 声明 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable {/*...*/} 可以看到ArrayList类实现了四个接口: List:支持List接口中提供的方法 RandomAccess:支持快速随机访问 有关RandomAccess可见:Java集合系列-RandomAccess Cloneable:支持对象克隆功能 有关Cloneable可见:Java基础系列-浅拷贝和深拷贝 Serializable:支持序列化功能 有关Serializable可见:Java基础系列-序列化与反序列化 还继承自AbstractList抽象类,这个抽象类是List的抽象实现,实现了一些List中的公共方法。 2.2 字段解析 public class ArrayList<E> extends AbstractList<E> implements