<分区>
Possible Duplicate:
list.clear() vs list = new ArrayList<int>();
我有一个列表:
List<Integer> l1 = new ArrayList<Integer>();
并在该列表中添加了一些整数变量。经过一些操作后,我需要重用该列表,因此我将其设置为 null
。
哪个更好,设置为 null
还是使用 .clear()
?还是有别的办法?
标签 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 = null
。 l1.clear()
如果你想从列表中删除所有元素,应该使用。
关于java - 关于列表的性能提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11296103/