为什么arraylist的新容量是(oldCapacity*3)/ 2 + 1?

Gmx*_*Gmx 3 java arraylist

为什么Java ArrayList中的ensureCapacity()使用const 1.5或(oldCapacity*3)/ 2 + 1扩展容量?

khe*_*ood 6

调整阵列大小是一项相对昂贵的操作.它想尝试并确保,如果该方法被称为带ensureCapacity(11),ensureCapacity(12),ensureCapacity(13),...它不应该每次都调整阵列.所以它通过合理的块(增加50%)而不是指定的最小值来调整大小.