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

Java 处理复杂数据结构的正确方法是什么?,java,Java,我有一个相当复杂的数据结构,它将地图结构堆叠在其他地图中: Map<String, Map<Integer, PerformanceScopeMeta> > complex; 这就足够了还是我完全错了?如果没有其他东西引用映射,那么是的,这就足够了(假设映射接受空值) 但是请记住,如果complex引用的对象符合垃圾收集的条件,那么您根本不需要做任何事情。只有当你需要清除地图的一部分时,你才需要这样做。根据我的经验,为了垃圾收集器而做任何事情的情况相对较少 就我个人而言

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

Map<String, Map<Integer, PerformanceScopeMeta> > complex;
这就足够了还是我完全错了?

如果没有其他东西引用映射,那么是的,这就足够了(假设映射接受空值)

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

就我个人而言,我会使用
映射。删除
而不是您建议的代码:

complex.remove("SOME_KEY");

我假设,您并不真的想要一个具有空值的条目。。。您只想完全删除条目,对吗?

使用
complex.remove(“SOME\u KEY”)
如果删除的值或删除的映射中的任何对象未被您的任何代码引用,则可以删除它。

要从映射中删除键,请使用
complex.remove(“SOME\u KEY”)
。这将使相应的值符合垃圾收集的条件,前提是没有剩余的活动引用。

我希望数据结构最终清除其内存,因此我猜删除顶部引用键就足够了。@code gijoe:但是
复杂的
本身是否符合垃圾收集的条件?如果是这样,您不需要删除其中的每一位。我是服务器启动时运行的单例(不幸的是)的成员,这就是为什么我需要知道内存将被释放。@code gijoe:好的-是的,这应该很好,但我建议您开始研究如何删除单例。另外,要注意线程方面。。。大多数映射都不是线程安全的,大多数单例都是从多个线程访问的。
complex.put("SOME_KEY", null);
complex.remove("SOME_KEY");