package com.changhong.csc.ie.mdm.test.org;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
public class TreeTest {
private Integer id;
private Integer pId;
private String name;
private List<TreeTest> children;
public TreeTest() {
}
public TreeTest(Integer id, Integer pId, String name) {
super();
this.id = id;
this.pId = pId;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getpId() {
return pId;
}
public void setpId(Integer pId) {
this.pId = pId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<TreeTest> getChildren() {
return children;
}
public void setChildren(List<TreeTest> children) {
this.children = children;
}
@Override
public String toString() {
return "TreeTest [id=" + id + ", pId=" + pId + ", name=" + name
+ ", children=" + children + "]";
}
// 测试数据
public static void main(String[] args) {
List<TreeTest> list = new ArrayList<TreeTest>();
Map<Integer, TreeTest> map = new HashMap<Integer, TreeTest>();
TreeTest terr1 = new TreeTest(1, 0, "一级父节点");
TreeTest terr2 = new TreeTest(2, 1, "一级1子节点");
TreeTest terr3 = new TreeTest(3, 2, "一级2子节点");
TreeTest terr4 = new TreeTest(4, 0, "二级父节点");
TreeTest terr5 = new TreeTest(5, 4, "二级1子节点");
TreeTest terr6 = new TreeTest(6, 4, "二级1子节点2");
TreeTest terr7 = new TreeTest(7, 3, "一级3子节点");
TreeTest terr8 = new TreeTest(8, 5, "二级2子节点");
map.put(terr1.getId(), terr1);
map.put(terr2.getId(), terr2);
map.put(terr3.getId(), terr3);
map.put(terr4.getId(), terr4);
map.put(terr5.getId(), terr5);
map.put(terr6.getId(), terr6);
map.put(terr7.getId(), terr7);
map.put(terr8.getId(), terr8);
/*
* List<TreeTest> li = getChildren(map,0,1);
*
* System.out.println(JSON.toJSON(li));
*/
Map<Integer, List<TreeTest>> treemap = new HashMap<Integer, List<TreeTest>>();
for (TreeTest treeTest : map.values()) {
List<TreeTest> listTree = treemap.get(treeTest.getpId());
if (listTree == null) {
listTree = new ArrayList<TreeTest>();
listTree.add(treeTest);
treemap.put(treeTest.getpId(), listTree);
} else {
List<TreeTest> ordTree = treemap.get(treeTest.getpId());
ordTree.add(treeTest);
treemap.put(treeTest.getpId(), ordTree);
}
}
List<TreeTest> lists = new ArrayList<TreeTest>();
lists.add(terr1);
List<TreeTest> li = getChildren(lists, treemap);
System.out.println(JSON.toJSON(li));
}
// 递归树
public static List<TreeTest> getChildren(List<TreeTest> trees,
Map<Integer, List<TreeTest>> children) {
List<TreeTest> childrenTree = null;
for (TreeTest tree : trees) {
// 获得子节点
childrenTree = children.get(tree.getId());
if (childrenTree != null) {
// 添加子节点
tree.setChildren(childrenTree);
// 递归
getChildren(tree.getChildren(), children);
}
}
return childrenTree;
}
}