Java ArrayList clear() 函数

2022-09-01 07:05:47

假设我有一个ArrayList<String> data;

我正在使用函数向此数组中添加一些数据。假设我已在此数组中添加了 10 个字符串。数组的大小现在为 10。data.add()

如何销毁数组中的所有元素?该函数刚刚将所有 10 个元素设置为 null。因此,当我尝试添加另一个元素时,它只是在11位置。我只想从0开始;data.clear()

我可以使用for循环来替换所有数据,但我真的认为有一种方法可以清空.是吗?ArrayList


答案 1

你的假设似乎不对。在 之后,新添加的数据从索引 0 开始。clear()


答案 2

如果您有任何疑问,请查看JDK源代码

ArrayList.clear()源代码:

public void clear() {
    modCount++;

    // Let gc do its work
    for (int i = 0; i < size; i++)
        elementData[i] = null;

    size = 0;
}

您将看到 它设置为 0,因此您从 0 位置开始。size

请注意,在向 中添加元素时,后端数组会进行扩展(即,如果需要,数组数据会复制到更大的数组中),以便能够添加新项目。执行时,仅删除对数组元素的引用并设置为 0,但是,容量将保持原样。ArrayListArrayList.clear()size