データベースから取得したこのデータを取得し、それをツリーに変換したいと考えています。
データ:
お母さんの息子のお母さんテキストの息子テキスト 1 2 メインレベル 1 2 4 レベル1 レベル2 4 5 レベル2 レベル3 4 7 レベル2 レベル3 1 8 メインレベル 1 8 9 レベル1 レベル2
コード:
List<String[]> testList=new ArrayList<String[]>();;
String[] test1={"1","2","Main","Level1"};
String[] test2={"2","4","Level1","Level2"};
String[] test3={"4","5","Level2","Level3"};
String[] test4={"4","7","Level2","Level3"};
String[] test5={"1","8","Main","Level1"};
String[] test6={"8","9","Level1","Level2"};
testList.add(test1);
testList.add(test2);
testList.add(test3);
testList.add(test4);
testList.add(test5);
testList.add(test6);
HashMap<String, List<String[]>> myHashMap = new HashMap<String, List<String[]>>();
for(int i=0; i<testList.size(); i++){
String[] test=testList.get(i);
String parent=test[0];
List<String[]> children = myHashMap.get(parent);
if (children == null){
children = new ArrayList<String[]>();
myHashMap.put(parent,children);
}
children.add(test);
}
Tree myTree=new Tree();
String node=testList.get(0)[0];
printTree(node, myTree, myHashMap);
「printTree」というメソッドもあります
public void printTree(String node, Tree myTree, HashMap<String, List<String[]>> myHashMap){
CheckBox nodeCheckBox=new CheckBox(node);
TreeItem root = new TreeItem(nodeCheckBox);
myTree.addItem(root);
if(myHashMap.containsKey(node)){
List<String[]> testList=myHashMap.get(node);
for(int i=0; i<testList.size(); i++){
String nextNode=testList.get(i)[1];
printTree(nextNode, myTree, myHashMap);
}
}
}
実行後、出力は次のようになりますが、これは正しくありません。
結果を次のようにしたい:
printTree 関数を機能させるには、少し変更する必要があると思います。
注 1: 私のコーディング方法が気に入らない場合は、自由に独自のソリューションを提供してください。ただし、このオブジェクトのデータを使用してくださいList<String[]> testList
。
注 2: テキスト (momText & sonText) 列について心配する必要はありませんが、数値 (mon & son ) 列を操作するだけで、文字列配列を介してテキストに簡単にアクセスできます。