如标题所述,如果我创建一个初始容量为 500 的 ArrayList,然后在一段时间后将其清除,它的容量是否仍为 500?还是我需要为此重新初始化它?
最佳答案
是的,它保留了它的容量。 (至少,不在 Oracle VM 的实现中):
/**
* Removes all of the elements from this list. The list will
* be empty after this call returns.
*/
public void clear() {
modCount++;
// Let gc do its work
for (int i = 0; i < size; i++)
elementData[i] = null;
size = 0;
}
需要说明的是:ArrayList
由一个数组支持(例如 ArrayList 的 int[]),每当您通过创建一个新数组并复制内容超出容量时,该数组就会扩展。清除不会(如代码中所示)创建一个新的较小的数组,将内容复制到那里,并销毁旧的大数组。
关于java - 清除 ArrayList 是否保留其容量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13581768/