ArrayList 扩容(JDK1.6):
默认大小:10
扩容点规则(什么时候扩容): 整除运算将容量扩展为原来的1.5倍加1, 扩容实现代码newCapacity = oldCapacity + oldCapacity/2 +1;扩容容量为1.5倍加一;
存储方式:数组
扩容方法:Arrays.copyOf(elementData, size);
扩容序列化:ArrayList实现java.io.Serializable的方式。当写入到输出流时,先写入“容量”,再依次写出“每一个元素”;当读出输入流时,先读取“容量”,再依次读取“每一个元素”。
ArrayList 扩容(JDK1.7):
默认大小:10
扩容点规则(什么时候扩容): 采用newCapacity = oldCapacity +(oldCapacity>>1);改为移位运算,同时扩容容量变为1.5倍。
存储方式:数组
扩容方法:Arrays.copyOf(elementData, size);
ArrayList 扩容(JDK1.8):
默认大小:刚刚初始化一个Arraylist其容量是0,当添加一个之后容量就变成了10
扩容点规则(什么时候扩容): 采用newCapacity = oldCapacity +(oldCapacity>>1);改为移位运算,同时扩容容量变为1.5倍。
存储方式:数组
扩容方法:Arrays.copyOf(elementData, size);
Vector 扩容:
默认大小: 10
扩容点规则(什么时候扩容): int newCapacity = (capacityIncrement > 0) ?(oldCapacity + capacityIncrement) : (oldCapacity * 2);
当扩容因子大于0时,新数组长度为原数组长度+扩容因子,否子新数组长度为原数组长度的2倍。
存储方式:数组
扩容方法:Arrays.copyOf(elementData, size);