关于看了源码的几点记录
===========================================================================
newCapacity :新容量
oldCapacity :原容量
===========================================================================
1.new ArrayList():
elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
add(1) : 容量= DEFAULT_CAPACITY = 10
2.new ArrayList(0):
elementData = EMPTY_ELEMENTDATA;
add(1) : 容量 = 1;
3.new ArrayList(1):
elementData = new Object[1];
add(1) : 容量 = 1;
add(2) : 容量 = 2;
4.容量满后,添加元素后容量变化:
1.原容量<2时,newCapacity = oldCapacity
2.MAX_ARRAY_SIZE时/1.5 >= 原容量 > 2时,newCapacity = oldCapacity + (oldCapacity >> 1)
3.MAX_ARRAY_SIZE >= 原容量 > MAX_ARRAY_SIZE时/1.5时,newCapacity = Integer.MAX_VALUE - 8
4.原容量>MAX_ARRAY_SIZE时,newCapacity = Integer.MAX_VALUE
5.trimToSize()
数组内有多少元素,容量就变为多少