@Data
public class MenuTree implements Serializable {
private static final long serialVersionUID = -7572373743354217640L;
private Integer id;
private String name;
private Integer pid;
private String url;
private Integer type; // 0目录,1菜单,2操作
private String icon;
private boolean status;
private boolean checked = false;
public boolean open = false;
private List<MenuTree> children;
}
封装方法
public class MenuTreeUtil {
private List<MenuTree> menuList = new ArrayList<MenuTree>();
public MenuTreeUtil(List<MenuTree> menuList) {
this.menuList = menuList;
}
//建立树形结构
public List<MenuTree> buildTree() {
List<MenuTree> treeMenu = new ArrayList<MenuTree>();
for (MenuTree menu : getParent()) {
menu = buildChildTree(menu);
treeMenu.add(menu);
}
return treeMenu;
}
//获取根节点
public List<MenuTree> getParent() {
List<MenuTree> rootMenu = new ArrayList<MenuTree>();
for (MenuTree menu : menuList) {
if (menu.getPid().equals(0)) {
rootMenu.add(menu);
}
}
return rootMenu;
}
//递归,建立子树形结构
public MenuTree buildChildTree(MenuTree parentMenu) {
List<MenuTree> childMenu = new ArrayList<MenuTree>();
for (MenuTree menu : menuList) {
if (menu.getPid().equals(parentMenu.getId())) {
childMenu.add(buildChildTree(menu));
}
}
parentMenu.setChildren(childMenu);
return parentMenu;
}
}