次のようなツリー構造で値( "o")を保持するJavaの最良の方法は何ですか。
obj1
/\
/ \
/ \
obj2 obj3
/\ /\
/ \ / \
/ \ / \
obj4 obj5 obj6 obj7
/\ /\ /\ /\
/ \ / \ / \ / \
o8 oN...
木のように見えますが、任意の深さは必要ありません。最終的な構造を操作するには、強力なデータタイピングと事前定義された見栄えの良い方法が必要です。
私の写真のように、キーによってある種の値のリストを取得できる必要があります。言い換えれば、構造は決して平面になるべきではありません。
.get(obj3)
戻る必要があり{obj6, obj7}, .get(obj1) - {obj2, obj3}
ます。
今のところ私はそのためにマップを使用していますが、構造の各レベルをチェックする必要があるため、そのようなマップを膨らませることは醜いです。そのように見えます(データは地図です):
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);
}
パフォーマンスは問題ではありませんが、コードの美しさは問題です。