【发布时间】:2020-07-15 13:55:19
【问题描述】:
在我的项目中,我有一些 HashMaps 我会经常重用,我被告知 HashMaps 会导致内存泄漏,并且 Map#clear 不是很有效,我应该将我的 HashMap 设置为 null,但是,我认为在每次使用 HashMap 之前进行空检查看起来很难看,那么将 HashMap 设置为 Maps#newHashMap 是否可以实现相同的目标,或者我应该将其设置为 null 并在每次使用之前执行空检查?
【问题讨论】:
-
“我被告知 HashMaps 会导致内存泄漏,并且 Map#clear 不是很有效,我应该将我的 HashMap 设置为 null”我从未听说过
HashMaps专门有这个问题。无论如何将它们设置为null只是确保您将忘记检查它的某个代码路径并最终得到一个NPE。你真的有必要重复使用它们吗? -
为什么要重复使用地图?这不是典型的做法。 (忽略那些告诉你
clear()“无效”的人。) -
HashMap 基本上是一个乘客列表,以乘客为键,值为目的地,我可以通过另一种方法将其直接存储给乘客,但不能直接添加到它是类,因为它来自 api。我应该寻找其他类型的数据存储吗?有人可以向我解释为什么重复使用地图是不好的吗?
-
为什么要把所有的乘客一起扔掉?移除一名或多名乘客的
remove操作似乎是一个合理的选择。 -
@user7 Maps#remove 或 = null 在 forEach 之后被调用,所以应该基本相同,对吧?