ArrayList 调整当前底层数组的大小还是创建一个新数组? 我有时读到过提到 ArrayList 的“可调整大小的数组”,但是我认为每次“调整大小”时都会创建一个新数组。 现实中会发生什么,同一个数组会调整大小,还是每次都会创建一个新数组(容量限制结束)?
谢谢, 确实是这样
最佳答案
您无法在 Java 中调整数组的大小。必须创建一个新的。
查看 OpenJDK 实现,您可以看到 add
方法调用名为 ensureCapacity
的方法如果需要,将通过复制来“调整”支持 Object
数组的大小。
public void ensureCapacity(int minCapacity) {
modCount++;
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
Object oldData[] = elementData;
int newCapacity = (oldCapacity * 3)/2 + 1;
if (newCapacity < minCapacity)
newCapacity = minCapacity;
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
}
关于java - ArrayList 调整当前底层数组的大小或创建一个新数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19366235/