重新实例化List或调用clear()的更好方法
使用Java(1.6)更好地在List上调用clear()方法还是重新实例化引用?
我有一个ArrayList,其中充满了未知数量的对象,并定期“刷新”-处理对象并清除列表。刷新后,列表将再次填充。刷新发生在随机时间。列表中的数字可能较小(10个对象)或较大(数百万个对象)。
那么,让“ flush”调用clear()或new ArrayList()更好吗?
甚至值得担心这种问题,还是让VM担心呢?我该如何看待Java的内存占用,以便自己完成这种事情?
任何帮助,不胜感激。
回答:
主要要考虑的是 其他 代码可能引用了该列表。如果现有列表在其他位置可见,您是否希望该代码查看已清除列表,还是保留现有列表?
如果没有其他可以看到的列表,我可能会清除它-但不是出于性能原因;仅仅因为您描述操作的方式 听起来 比“创建新列表”更像是清除操作。
该ArrayList<T>
文档不指定会发生什么情况基础数据结构,但是看着在Eclipse
1.7的实现,它看起来像你应该叫trimToSize()
后clear()
-否则,你仍然可以有一个大阵空引用的支持列表。(当然,也许这对您来说不是问题,也许这比在再次建立大小时复制数组要更有效。您将比我们更了解这一点。)
(当然,创建新列表并不需要旧列表将所有数组元素设置为null …,但我怀疑这在大多数情况下是否有意义。)
以上是 重新实例化List或调用clear()的更好方法 的全部内容, 来源链接: utcz.com/qa/416605.html