我们试图以线性方式将所有树节点存储到HashMap中(遍历节点之后的节点)和运行到内存问题(OutOfMemoryError:Java堆空间),最大内存设置为90mb (-Xmx90M)
以下是我们使用的代码(在HashMap中包含HashMap ):
HashMap<Integer, MyNode> refNodeMap
HashMap<String, HashMap<Integer, MyNode>> spNodeMap;
String Id;
toCopy是MyNode对象的类型。
if (refNodeMap.containsKey(Id)) {
spNodeMap.get(Id).put(toCopy.getId(), toCopy);
} else {
spNodeMap.put(Id, new HashMap<Integer, MyNode>());
spNodeMap.get(Id).put(toCopy.getId(), toCopy);
}
答案 0 :(得分:0)
正如我所说,使用HashMaps作为树中的节点是一个糟糕的想法 - 超过几百个元素的开销会让你活着。
但是对于字符串节点ID,您可以使用具有连接ID值的单个HashMap,la&#34; a.b.c&#34;或&#34; a / b / c&#34;。你不能遍历&#34;树非常好,但你可以非常有效地找到一个特定的元素。