# 设置节点
# 获取所有根节点和为根节点设置下级节点
//最终结果
List<Entity> res = new ArrayList<Entity>();
//所有根节点
for (Entity e : list) { //list:数据库原始数据
if(e.getParentId().equals("0")) {
res.add(e);
}
}
//为根节点设置下级节点
for(Entity listRes : res) {
listRes.setChildren(getChild(listRes.getId(),list));
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 递归查找子节点
/**
* 递归查找子节点
* @param id 当前节点id
* @param list 要查找的列表
* @return
*/
private List<Entity> getChild(String id,List<Entity> list){
//子节点
List<Entity> childList = new ArrayList<Entity>();
for (Entity ify : list) {
if(ify.getParentId().equals(id)) {
childList.add(ify);
}
}
//循环子节点
for(Entity ify : childList) {
//递归
ify.setChildren(getChild(ify.getId(),list));
}
//退出
if(childList.size() == 0) {
return null;
}
return childList;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25