java - 清除 ArrayList 是否保留其容量

标签 java arraylist capacity

如标题所述,如果我创建一个初始容量为 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/

相关文章:

go - gorouines 是否忽略 channel 的缓冲区大小

java - 为什么ArrayList没有capacity()方法,却有ensureCapacity(int),而Vector、StringBuffer、StringBuilder两者都有?

java - NotificationCompat.Builder 中的 setLargeIcon() 不起作用

java - 外键对 POST 的结果不起作用,但 GET 有效

java - 获取动态生成的资源名称/字符串的 Drawable id

java - 如何获取 WebElement 的父级

java - 多线程和处理器的能力

java - 将链表转换为 ArrayList

java - 二维数组 int 的 ArrayList

c# - 如何在 List<object> c# 中获取数组项