我從數據庫中得到了這個數據&我想將它轉換成樹。如何將HashMap <String,列表<String[]>>轉換爲GWT中的Tree?
DATA:
mom son momText sonText 1 2 Main Level1 2 4 Level1 Level2 4 5 Level2 Level3 4 7 Level2 Level3 1 8 Main Level1 8 9 Level1 Level2
CODE:
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)列,文本可以很容易地通過字符串數組訪問。
完美!非常感謝你。 – Tum
歡迎您.. :) – iMBMT