GroupTree.java
package com.sckd;
import java.util.ArrayList;
import java.util.List;
/**
* @author ScKd3035
* @create 2021 - 12 - 16 20:41
*/
public class GroupTree {
private List<Group> groupList = new ArrayList<Group>();
public GroupTree(List<Group> groupList) {
this.groupList = groupList;
}
//建立树形结构
public List<Group> buildTree() {
List<Group> treeGroups = new ArrayList<Group>();
for (Group groupNode : getRootNode()) {
groupNode = buildChilTree(groupNode);
treeGroups.add(groupNode);
}
return treeGroups;
}
//递归,建立子树形结构
private Group buildChilTree(Group pNode) {
List<Group> childGroups = new ArrayList<Group>();
for (Group groupNode : groupList) {
//当前节点的父id等于根节点的组id
if (groupNode.getParentgroupid().equals(pNode.getGroupid())) {
childGroups.add(buildChilTree(groupNode));
}
}
pNode.setChildrenList(childGroups);
return pNode;
}
//获取根节点
private List<Group> getRootNode() {
List<Group> rootGroupLists = new ArrayList<Group>();
for (Group groupNode : groupList) {
if (groupNode.getParentgroupid().equals("")) {
rootGroupLists.add(groupNode);
}
}
return rootGroupLists;
}
}