源码分析: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()可以调整大小。