arraylist的扩容原理?
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE – 8 = 2^31-1-8 ; 
Integer.MAX_VALUE = 0x7fffffff = 2^31-1;
 

- 老的长度等于当前elementData的长度。
 - 新数组的长度=原数组的长度+原数组长度>>1,右移1是除以2.
 - 若扩容1.5倍后仍不够用,则newCapacity=minCapacity
 - 如果newCapacity比MAX_ARRAY_SIZE还大,则调用hugeCapacity方法。
 - 老数据拷贝到新数组中。
 

如果MAX_ARRAY_SIZE达不到要求,则赋值Integer.MAX_VALUE,理论上arraylist的最大容量为Integer.MAX_VALUE










