递归方法构建树
/**
* 使用递归方法建树
* @param menuTrees 子节点集合 / 返回的数据
* @return List
*/
public static List<Dept> buildByRecursive(List<Dept> menuTrees) {
List<Dept> trees = new ArrayList<>();
for (Dept menuTree : menuTrees) {
//查找根节点
if (menuTree.getPcode() == null) {
trees.add(findChildren(menuTree,menuTrees));
}
}
return trees;
}
/**
* 递归查找子节点
* @param menuTree 菜单数对象
* @param menuTrees 子节点
* @return MenuTree
*/
private static Dept findChildren(Dept menuTree,List<Dept> menuTrees){
for (Dept it : menuTrees) {
if(menuTree.getCode().equals(it.getPcode())) {
if (menuTree.getChildren() == null) {
menuTree.setChildren(new ArrayList<>());
}
menuTree.getChildren().add(findChildren(it,menuTrees));
}
}
return menuTree;
}