ArrayList源码分析
1、java.util.ArrayList<E> : List 接口的大小可变数组的实现类
- ArrayList 内部基于 数组 存储 各个元素。
- 所谓大小可变数组,是指当 数组容量不足以存放新的元素时,创建新数组,并将原数组中的内容复制过来。
2、ArrayList底层实现原理
- 构造方法源码分析
//对象数组:ArrayList的底层数据结构,transient表示该字段不进行序列化操作 transient Object[] elementData; //实例化一个空数组 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; //实例化一个空数组 private static final Object[] EMPTY_ELEMENTDATA = {}; /** *指定初始容量的有参构造 */ public ArrayList(int initialCapacity) { //如果初始容量大于0就,对象数组就指向到一个新的数组,大小为所指定的大小 if (initialCapacity > 0) { this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) { //如果大于0就指向一个空数组 this.elementData = EMPTY_ELEMENTDATA; } else { throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); } } /** * 无参构造 */ public ArrayList() { //对象数组就指向到一个空数组 this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }
ArrayList基于数组实现,构造方法有有参构造和无参构造如果指定了初始容量且大于0就将对象数组指定到一个新的数组,大小为所指定的大小。如果调用无参构造就将对象数组指定到一个空的数组。
- 添