如何清除ArrayList?

Jak*_*ake 11 java android arraylist

我有以下代码ThisClass:

static ArrayList<MyClass> classlist; 
Run Code Online (Sandbox Code Playgroud)

如果我打电话:

ThisClass.classlist = new ArrayList<MyClass>();
ThisClass.classlist.add(object);
Run Code Online (Sandbox Code Playgroud)

然后再次调用此行:

ThisClass.classlist = new ArrayList<MyClass>();
Run Code Online (Sandbox Code Playgroud)

它会重置ThisClass.classlist列表,即类列表列表将不再包含对象吗?

Jop*_*ops 27

这是一个例子:

代码1:创建ArrayList并添加对象

ThisClass.classlist = new ArrayList<MyClass>();
ThisClass.classlist.add(object);
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

代码2:通过重新初始化重置

ThisClass.classlist = new ArrayList<MyClass>();
Run Code Online (Sandbox Code Playgroud)

结果 - 你通过使它指向一个新的对象来重置它:

在此输入图像描述

代码3:通过清除对象重置

你应该做什么使它"不再包含一个对象"是:

ThisClass.classlist.clear();
Run Code Online (Sandbox Code Playgroud)

清除所有元素的循环并使其为.在内部,ArrayList也指向其对象的内存地址,但为了简单起见,只要认为它们在调用此方法时被"删除".

在此输入图像描述

代码4:重置整个班级列表

如果你想让它"不再包含ArrayList",你可以:

ThisClass.classlist = null;
Run Code Online (Sandbox Code Playgroud)

这意味着:

在此输入图像描述

另外,请注意您的问题标题提到"静态ArrayList".static在这种情况下并不重要.无论对象是否为静态,问题的结果都是相同的.


acd*_*ior 6

呼唤

ThisClass.classlist = new ArrayList<MyClass>();
Run Code Online (Sandbox Code Playgroud)

确实会清除ThisClass.classlist数组(实际上,会创建一个新数组ArrayList并将其放置在旧数组的位置)。

话虽如此,最好使用:

ThisClass.classlist.clear();
Run Code Online (Sandbox Code Playgroud)

这是一种更清晰的方法:在代码中显示您的真实意图,表明您真正想要完成的任务,从而使您的代码更具可读性/可维护性。