在 Java 中将值(“o”)保存在这样的树结构中的最佳方法是什么:
obj1
/\
/ \
/ \
obj2 obj3
/\ /\
/ \ / \
/ \ / \
obj4 obj5 obj6 obj7
/\ /\ /\ /\
/ \ / \ / \ / \
o8 oN...
它看起来像一棵树,但我不需要任意深度。我宁愿需要强大的数据类型和预定义的好看的方法来处理最终结构。
我需要能够通过键获得某种值列表 - 就像我的图片一样。换句话说,结构不应该以任何方式变成平面的。
我需要.get(obj3)
返回{obj6, obj7}, .get(obj1) - {obj2, obj3}
。
现在我使用 Map ,但是膨胀这样的地图是丑陋的,因为我需要检查结构的每一层。看起来像那样(数据是地图):
if(data.get(somedouble) == null) {
Map<Integer, Data> inm = new TreeMap<>();
inm.put(someint, obj);
Map<Double, Map<Integer, Data>> m = new TreeMap<>();
m.put(somedouble2, inm);
data.put(somedouble, m);
}
else {
if(data.get(somedouble).get(somedouble2) == null) {
Map<Integer, Data> inm = new TreeMap<>();
inm.put(someint, obj);
data.get(somedouble).put(somedouble2, inm);
}
else
data.get(somedouble).get(somedouble2).put(someint, obj);
}
性能不是问题,但代码美感才是。