部门类
public class Department {
private String id;
private String name;
private String pid;
public Department(String id, String name, String pid) {
super();
this.id = id;
this.name = name;
this.pid = pid;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
}
节点类
package com.kevin;
import java.util.ArrayList;
import java.util.List;
public class TreeNode implements Serializable{
private String id;
private String name;
private List<TreeNode> children=new ArrayList<TreeNode>();
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<TreeNode> getChildren() {
return children;
}
public void setChildren(List<TreeNode> children) {
this.children = children;
}
}
生成过程
public static void main(String[] args) {
List<Department> dList = new ArrayList<>();
dList.add(new Department("1","GM","0"));
dList.add(new Department("22","PM","1"));
dList.add(new Department("21","R7D","1"));
dList.add(new Department("27","STD","21"));
Map<String, List<TreeNode>> map=new HashMap<String, List<TreeNode>>();
TreeNode node=null;
Set<String> idSet=new HashSet<>();
for (Department department : dList) {
if(!idSet.contains(department.getId())) {
node = new TreeNode();
node.setId(department.getId());
node.setName(department.getName());
if(map.get(department.getPid())==null) {
map.put(department.getPid(), new ArrayList<>());
}
map.get(department.getPid()).add(node);
idSet.add(department.getId());
}
}
Iterator<String> it=map.keySet().iterator();
String id=null;
while(it.hasNext()) {
id = it.next();
List<TreeNode> childeNodes=map.get(id);
for (TreeNode treeNode : childeNodes) {
if(map.get(treeNode.getId())!=null) {
treeNode.getChildren().addAll(map.get(treeNode.getId()));
}
}
}
//System.out.println(map.get("0").toString());
System.out.println(JSONObject.toJSON(map.get("0")));
}
测试结果
[
{
"children":[
{
"children":[
],
"name":"PM",
"id":"22"
},
{
"children":[
{
"children":[
],
"name":"STD",
"id":"27"
}
],
"name":"R7D",
"id":"21"
}
],
"name":"GM",
"id":"1"
}
]
些许不一样,按需参考