我正在查看Java文档,我遇到了ArrayLists的clear()方法。
与简单地将新的ArrayList对象重新分配给变量相比,有什么用呢?
答案 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()不会重新分配新对象,因此不会影响性能。