ArrayList的扩容机制
情况一:
一个一个加元素,0->10->10的1.5倍
0->10的机制其实是,初始判断为空时设置minCapacity为默认值10,这样oldCapacity = 0, 0的1.5倍还是0,newCapacity便等于 minCapacity = 10.
如果需要的minCapacity 如17,在扩容1.5倍后仍然不能满足,newCapacity应等于17
//grow函数
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
情况二:
第一次加或者初始化x>1个,x->1.5倍x
同样,如果需要的minCapacity ,在扩容1.5倍后仍然不能满足,newCapacity应等于minCapacity