public ArrayList();
public ArrayList(Collection<? extends E> c)
public ArrayList(int initialCapacity)
根据传入的最小须要容量minCapacity来和数组的容量长度对比,若minCapactity大于或等于数组容量,则须要进行扩容。(
若是实际存储数组是空数组,则最小须要容量就是默认容量)
实现扩容:
jdk7中采用
>>位运算,右移动一位。 容量至关于扩大了1.5倍;
总结:
在JDK1.7中,若是经过无参构造的话,初始数组容量为0,当真正对数组进行添加时,才真正分配容量。
每次按照1.5倍(位运算)的比率经过copeOf的方式扩容。
在JKD1.6中,若是经过无参构造的话,初始数组容量为10.每次经过copeOf的方式扩容后容量为原来的1.5倍加1.以上就是动态扩容的原理。