jdk源码记录——ArrayList
ArrayList
面试常问问题1: ArrayList与HashMap的扩容 -》为什么ArrayList的扩容是1.5倍增加,而HashMap却是以2倍方式扩容
ArrayList之grow函数
1 private void grow(int minCapcaity){ 2 //overflow-conscious code 3 int oldCapacity=elementData.length; 4 5 //很明显下面就表明ArrayList的扩容是以1.5倍的方式进行的 6 int newCapacity=oldCapacity+oldCapacity>>1; 7 8 //下面对newCapacity的大小进行限制 9 if(newCapacity - minCapacity <0) 10 newCapacity=minCapacity; //将newCapacity设置为默认最小尺寸 11 if(newCapacity - MAX_ARRAY_SIZE>0) 12 newCapacity=MAX_ARRAY_SIZE; //将newCapacity限制为最大尺寸 13 elementData=Arrays.copy(elementData,newCapacity)//分配一个新的数组,并将旧数组的值赋值到新数组上 14 }

浙公网安备 33010602011771号