ArrayList的扩容机制
默认初始容量10
1.add方法
第一步调用ensureCapacityInternal方法,第二步赋值
2.ensureCapacityInternal方法
第一步如果原数组为空那么长度为10,要不然就加一 第二步调用ensureExplicitCapacity
3.ensureExplicitCapacity方法
在此判断是否需要扩容,grow为扩容核心方法
4.grow方法
第一步定义旧的数组长度,第二步新的数组长度为原来的1.5倍,
第三步用旧的长度与原数组长度的1.5倍进行比较,如果小于0则重新赋值 第四步调用hugeCapacity方法
5.hugeCapacity方法
如果minCapacity大于最大容量,则新容量则为Integer.MAX_VALUE
,否则,新容量大小则为 MAX_ARRAY_SIZE 即为 Integer.MAX_VALUE - 8
。