当我们删除元素时,ArrayList的容量会降低吗?
2022-09-01 09:00:50
ArrayList 的默认容量为 10 个对象。当大小超过 10 个对象时,ArrayList 将在内部增加其容量。当我们从 ArrayList 中删除对象时,容量是否会降低。
如果 ArrayList 容量不减少,这是否会导致性能问题?
ArrayList 的默认容量为 10 个对象。当大小超过 10 个对象时,ArrayList 将在内部增加其容量。当我们从 ArrayList 中删除对象时,容量是否会降低。
如果 ArrayList 容量不减少,这是否会导致性能问题?
它不会自动减少这一点。从文档。
public void trimToSize()
将此 ArrayList 实例的容量修剪为列表的当前大小。应用程序可以使用此操作来最小化 ArrayList 实例的存储。
arraylist中有几个删除方法,我将使用按索引版本删除作为此示例
public E remove(int index) {
rangeCheck(index);
modCount++;
E oldValue = elementData(index);
int numMoved = size - index - 1;
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
elementData[--size] = null; // Let gc do its work
return oldValue;
}
需要注意的最重要的事情是,永远不会在其中创建新数组,因此其大小不会更改,只会复制元素。elementData
如果需要减少阵列列表的容量(通常不会使用),请使用trimToSize()