java - 关于列表的性能提示

标签 java

<分区>

Possible Duplicate:
list.clear() vs list = new ArrayList<int>();

我有一个列表:

List<Integer> l1  = new ArrayList<Integer>();

并在该列表中添加了一些整数变量。经过一些操作后,我需要重用该列表,因此我将其设置为 null

哪个更好,设置为 null 还是使用 .clear()?还是有别的办法?

最佳答案

l1 = null; 将 null 分配给 l1 变量。如果该列表之前已存储在另一个对象中,则该其他对象仍然具有对该列表的引用,因此仍然可以访问存储在该列表中的所有元素。如果 l1 之前引用的 List object 对象不再可达,它将被垃圾回收。它的元素也一样:如果它们不再可达,它们将被垃圾收集。

l1.clear(); 非常不同:它从列表中删除所有元素。如果该列表之前已存储在另一个对象中,则该其他对象具有对您刚刚清除的列表的引用,因此无法再访问存储在列表中的元素(因为您删除了它们)。如果以前存储在列表中的元素不再可达,它们将被垃圾回收。该列表不会,因为您保留对它的引用 (l1)。

因此,如果您想重用变量,但又想保持 List Object 不变,则应使用 l1 = nulll1.clear() 如果你想从列表中删除所有元素,应该使用。

关于java - 关于列表的性能提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11296103/

相关文章:

java - 嵌套平面图可观察 rxJava

javascript - 如何在java脚本中迭代和打印java表单对象的属性?

Java 7 : COM-API does not work with Quality Center (OTAClient. dll),但适用于 Java 6

java - 识别 AES 加密文件

java - 在 intellij 项目中使用下载的 .class 文件

java - 如何解决 Spring UnsatisfiedDependencyException 错误?

java - 使用循环绘制多个形状 - Android Canvas

java - yyyyMMdd 的正则表达式日期验证

java - 将字符串拆分为列表、排序并保持顺序

java - 无法使用 Struts 2.5 运行简单的登录应用程序