https://www.cnblogs.com/zhaojinxin/p/6748009.html
在JKD1.7中实现是,如果通过无参构造的话,初始数组容量为0,当真正对数组进行添加时,才真正分配容量。每次按照1.5倍(位运算)的比率通过copeOf的方式扩容。
实现扩容:
jdk7中采用>>位运算,右移动一位。 容量相当于扩大了1.5倍;???
举例说明:添加20个元素到ArrayList中
当第一次插入元素时才分配10(默认)个对象空间。之后扩容会按照1.5倍增长。
也就是当添加第11个数据的时候,Arraylist继续扩容变为10*1.5=15;
当添加第16个数据时,继续扩容变为15 * 1.5 =22个
在JKD1.6中实现是,如果通过无参构造的话,初始数组容量为10,每次通过copeOf的方式扩容后容量为原来的1.5倍,以上就是动态扩容的原理。
本文详细介绍了在不同版本的Java Development Kit (JDK) 中ArrayList如何实现动态扩容。在JDK 1.6中,通过无参数构造函数创建的ArrayList初始容量为10,并且在需要时按1.5倍的比例进行扩容。而在JDK 1.7中,初始容量为0,首次添加元素时分配10个对象空间,并同样采用1.5倍的增长率进行扩容。
4903

被折叠的 条评论
为什么被折叠?



