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

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

有帮助吗?

解决方案

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

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

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

其他提示

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

private final List<Thing> things = ...

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

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top