有很多情况下,比如,菜单需要树形结构的数据,部门需要树形结构
目录
1.获取根节点代码
/**
* 获取根节点
* @param list
* @return
*/
public List<UcMenuPo> getRootNode(List<UcMenuPo> list){
List<UcMenuPo> rootNode = new ArrayList<>();
for (UcMenuPo menu : list) {
//查到父级
if (menu.getMenuLevel()==1){
rootNode.add(menu);
}
}
return rootNode;
}
2.构建子树代码
/**
* 构建子树
* @param rootNode
* @param list
* @return
*/
public UcMenuPo buildChildren(UcMenuPo rootNode,List<UcMenuPo> list){
List<UcMenuPo> childrenTree = new ArrayList<>();
for (UcMenuPo menu : list) {
if (StringUtils.isNotEmpty(menu.getParentMenuid())){
if (menu.getParentMenuid().equals(rootNode.getMenuid())){
childrenTree.add(buildChildren(menu,list));
}
}
}
rootNode.setChildren(childrenTree);
return rootNode;
}
3.构建树代码
/**
* 构建树
* @param list
* @return
*/
public List<UcMenuPo> buildTree(List<UcMenuPo> list){
List<UcMenuPo> menus = getRootNode(list);
for (UcMenuPo menu : menus) {
buildChildren(menu,list);
}
return menus;
}