1、扩容特点
-
ArrayList中维护了一个Object类型的数组,elementData
-
每当创建Arraylist的对象的时候,如果是无参构造,则初始的elementData是0,第一次添加数据到里面的时候,elementData扩容为10,如果需要再次扩容,则扩容为原来的1.5倍
-
如果使用的是指定大小的构造器,则初始的elementData的容量就是指定的大小,扩容的话也是直接扩容为elementData的1.5倍
2、源码解读
在源码中主要有几个成员变量
-
elementData:动态数组,也就是我们存储数据的核心数组(底层)
-
DEFAULT_CAPACITY:数组的默认长度
-
size:记录有效的数组长度。
-
EMPTY_ELEMENTDATA DEFAULTCAPACITY_EMPTY_ELEMENTDATA:两个空数组
空参构造
2.ArrayList(int initialCapacity)
3.ArrayList(Collection<? extends E> c)
传入集合c作为ArrayList中的elementData
4.grow(int minCapacity)(★)