@Data
@NoArgsConstructor
public class Menu {
private String menuId;
private String parentId;
private String menuDescribe;
private String url;
private List<Menu> children;
public Menu(String menuId, String parentId, String menuDescribe, String url) {
this.menuId = menuId;
this.parentId = parentId;
this.menuDescribe = menuDescribe;
this.url = url;
}
}
public class MenuTree {
private List<Menu> buildChildTree(List<Menu> pNode) {
List<Menu> rootNode = getRootNode(pNode);
for (Menu menu : rootNode) {
menu.setChildren(getchildrenNode(menu, pNode));
}
return rootNode;
}
public List<Menu> getchildrenNode(Menu menu, List<Menu> rootMenu) {
List<Menu> childrenNode = new ArrayList<Menu>();
for (Menu menu1 : rootMenu) {
if (menu.getMenuId().equals(menu1.getParentId())) {
childrenNode.add(menu1);
}
}
for (Menu childrenMenu : childrenNode) {
childrenMenu.setChildren(getchildrenNode(childrenMenu, rootMenu));
}
if (childrenNode.size() == 0) {
return null;
}
return childrenNode;
}
private List<Menu> getRootNode(List<Menu> menuList) {
List<Menu> rootMenuLists = new ArrayList<Menu>();
for (Menu menuNode : menuList) {
if (menuNode.getParentId().equals("0")) {
rootMenuLists.add(menuNode);
}
}
return rootMenuLists;
}
public static void main(String[] args) {
List<Menu> menuList = new ArrayList<Menu>();
menuList.add(new Menu("1", "0", "系统管理", "/admin"));
menuList.add(new Menu("4", "1", "权限管理", "/admin"));
menuList.add(new Menu("5", "1", "密码修改", "/admin"));
menuList.add(new Menu("6", "1", "新加用户", "/admin"));
menuList.add(new Menu("7", "4", "系统监控", "/admin"));
menuList.add(new Menu("8", "4", "在线用户", "/admin"));
menuList.add(new Menu("9", "5", "订阅区", "/admin"));
menuList.add(new Menu("10", "6", "未知领域", "/admin"));
MenuTree menuTree = new MenuTree();
List<Menu> menus = menuTree.buildChildTree(menuList);
for (Menu menu : menus) {
System.out.println(menu);
}
}
}