没有指定list大小:0→10→15→22(×1.5以此类推)
指定list大小:指定大小×1.5
2.使用无参构造器的扩容
进入后可以看到elementData是个空数组
往list里面增加数据
调用add方法
ensureCapacityInternal先去确定容量够不够
再把e放进去elementData下标为size的位置,注意这里是先放进size后size再+1
size此时是0
minCapacity就是size+1=1,DEFAULT_CAPACITY是提前设置好的常量为10
这里DEFAULT_CAPACITY和minCapacity比较大小,谁大谁新赋值给minCapacity
所以minCapacity值变成了10
接着调用ensureExplicitCapacity方法
ensureExplicitCapacity方法
modCount记录集合被修改的次数(多线程安全问题)
elementData是当前创造集合的空间,因为是空集合,所以为0
minCapacity是需要的最小的集合容量
这里minCapacity大于elementData表示当前创造集合的空间不够了,需要扩容,所以会调用grow方法
grow是扩容的具体操作
最后回到add方法里的elementData【size++】=e,开始再集合内添加数据
3.使用有参构造器的扩容
直接生成一个初始化为8的集合
后面步骤与无参基本一致