ArrayList的有用性<e> .clear()?</e>

时间:2009-05-05 22:43:31

标签: java memory-management arraylist

我正在查看Java文档,我遇到了ArrayLists的clear()方法。

与简单地将新的ArrayList对象重新分配给变量相比,有什么用呢?

6 个答案:

答案 0 :(得分:14)

因为可能存在对一个列表的多个引用,所以清除它可能比重新分配所有引用更可取和/或更实用。

如果你经常清空你的数组(在一个大循环内),那么就没有必要创建大量的临时对象。当然,垃圾收集器最终会将它们清理干净,但如果你不必这样做就没有资源浪费资源。

因为清除列表比创建新列表要少。

答案 1 :(得分:3)

您可能有一个最终字段(类变量)List

private final List<Thing> things = ...

在课堂的某个地方你要清除(删除所有)事物。由于things是最终的,因此无法重新分配。此外,您可能不希望重新分配新的List实例,因为您已经实例化了一个非常好的List。

答案 2 :(得分:2)

想象一下在整个代码中存在多个相同java.util.ArrayList引用的情况。创建列表的新实例并分配给所有变量几乎是不可能或非常困难的。但java.util.ArrayList.clear()可以解决问题!

答案 3 :(得分:2)

如果您的目标非常明确,那么您支付的费用比创建新对象要少。

重新分配引用不会清除该对象。假设如果没有其它参考,GC将很快收回。否则,你只是弄得一团糟。

答案 4 :(得分:2)

除了提到的原因之外,清除列表通常在语义上比创建新列表更正确。如果您想要的结果是清除列表,则应采取的操作是清除列表,而不是创建新列表。

答案 5 :(得分:1)

clear()不会重新分配新对象,因此不会影响性能。