处理复杂数据结构的正确方法是什么?

时间:2013-04-04 15:16:21

标签: java

我有一个相当复杂的数据结构,它将Map结构堆叠在其他地图中:

Map<String, Map<Integer, PerformanceScopeMeta> > complex;

这是PerformanceScopeMeta类:

class PerformanceScopeMeta {
    /* Meta information */
    private Map<String, String> meta;
    private List<PerformanceMessage> messages;
 }

这就是我所做的“使内存可用于垃圾收集”:

complex.put("SOME_KEY", null);

这还不够,还是我完全错了?

3 个答案:

答案 0 :(得分:7)

如果 else 没有引用地图,那么是的,这就足够了(假设你的地图接受空值)。

但请记住,如果complex引用的对象符合垃圾回收条件,那么您根本不需要做任何事情。只有当您需要清除部分地图时才需要这样做。根据我的经验,为了垃圾收集器你必须做任何是相对罕见的。

我个人使用Map.remove代替您建议的代码:

complex.remove("SOME_KEY");

确实想要一个空值的条目,我假设......你只是想完全摆脱这个条目,对吗?

答案 1 :(得分:4)

如果删除的值或删除的地图中的任何对象未被任何代码引用,则使用complex.remove("SOME_KEY")即可。

答案 2 :(得分:4)

要从地图中删除密钥,请使用complex.remove("SOME_KEY")。这将使相应的值符合垃圾回收的条件,只要没有剩余的实时引用