源码分析:ArrayList

ArrayList:动态数组
内部实现:数组

1.初始化大小:10
如果JDK1.8时,new ArrayList(),发现数组初始化为一个DEFAULTCAPACITY_EMPTY_ELEMENTDATA,长度为0的空数组。
如果JDK1.6时,new ArrayList(),发现数组直接初始化为一个长度为10的Object[]。
如果JDK1.7时,new ArrayList(),发现数组初始化为一个EMPTY_ELEMENTDATA,长度为0的空数组。

2.添加元素时,如果数组满了,如何扩容
扩容为1.5倍

JDK1.7和JDK1.8时,因为一开始是空数组,那么第一次扩展为长度为10的数组。然后不够的话,再扩容为原来的1.5倍。

3.删除元素时,数组会不会缩小
不会
但是像ArrayList有一个trimToSize()可以调整大小。

猜你喜欢

转载自www.cnblogs.com/1185937986-jili/p/12897532.html