调用
List<Operate> operateTree = new Tree(operateList).buildOperateTree();
实体类
public class Operate {
private String id;
private String name;
private String parentid;
private List<Operate> children;
//省略set和get
Tree类
public class Tree {
//操作树
private List<Operate> operateList;
public Tree(List<Operate> operateList,List<Resources> resourcesList) {
this.operateList = operateList;
}
//建立树形结构
public List<Operate> buildOperateTree(){
List<Operate> operateTree =new ArrayList<>();
for(Operate operateNode : getOperateRootNode()) {
operateNode=buildOperateChildTree(operateNode);
operateTree.add(operateNode);
}
return operateTree;
}
//递归,建立子树形结构
private Operate buildOperateChildTree(Operate pNode){
List<Operate> childMenus =new ArrayList<>();
for(Operate menuNode : operateList) {
if(menuNode.getParentid().equals(pNode.getId())) {
childMenus.add(buildOperateChildTree(menuNode));
}
}
pNode.setChildren(childMenus);
return pNode;
}
//获取根节点
private List<Operate> getOperateRootNode() {
List<Operate> rootMenuLists =new ArrayList<>();
for(Operate menuNode : operateList) {
//根节点默认为空字符串
if(menuNode.getParentid().equals("")) {
rootMenuLists.add(menuNode);
}
}
return rootMenuLists;
}
}