Java ArrayList clear()函数

art*_*ros 33 java list arraylist

比方说我有一个 ArrayList<String> data;

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

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

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

Dan*_* D. 66

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

  • 我刚刚设法研究我的代码.你是对的.我刚刚在我的其他方法中出错了,这填补了我以前的数据.从现在开始提出愚蠢的问题之前,我先阅读文档. (14认同)

Tom*_*Tom 26

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

ArrayList.clear() 源代码:

public void clear() {
    modCount++;

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

    size = 0;
}
Run Code Online (Sandbox Code Playgroud)

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

请注意,添加元素时ArrayList,后端数组将被扩展(即,如果需要,将数组数据复制到更大的数组),以便能够添加新项.执行ArrayList.clear()时只删除对数组元素的引用并设置size为0,但capacity保持不变.


Hui*_*eng 10

ArrayList.clear(来自Java Doc):

从此列表中删除所有元素.此调用返回后,列表将为空


小智 9

之后data.clear()肯定会从零指数再次开始.


Juv*_*nis 8

data.removeAll(data); 我想,我会做的.


Aly*_*mal 5

它不是真正的clear()功能清除Arraylist并从索引0开始