生成菜单树

生成菜单树

public class MenuTreeGenerator {
    public static void main(String[] args) {
        Map<String, Menu> map;
        MenuTreeGenerator menuTreeGenerator = new MenuTreeGenerator();
        List<Menu> allMenuEntities = menuTreeGenerator.getAllMenuEntities();
        //list转map
        map = allMenuEntities.stream().collect(Collectors.toMap(Menu::getId, a -> a, (k1, k2) -> k1));
        System.out.println(menuTreeGenerator.getTreeMenu(allMenuEntities, map));
        //打印:[menu{id:1,parentId:null,childMenus:[menu{id:11,parentId:1,childMenus:[menu{id:111,parentId:11,childMenus:[]}]}, menu{id:12,parentId:1,childMenus:[]}]}, menu{id:2,parentId:null,childMenus:[menu{id:21,parentId:2,childMenus:[]}]}]
    }

    public List<Menu> getTreeMenu(List<Menu> allMenuEntities, Map<String, Menu> map) {
        List<Menu> treeMenu = new ArrayList<>();
        for (Menu menu : allMenuEntities) {
            if (StringUtils.isEmpty(menu.getParentId())) {
                treeMenu.add(menu);
            } else {
                Menu parentMenu = map.get(menu.getParentId());
                parentMenu.addChildMenu(menu);
            }
        }
        return treeMenu;
    }

    public List<Menu> getAllMenuEntities() {
        List<Menu> allMenus = new ArrayList<>();
        Menu m1 = new Menu();
        m1.setId("1");

        Menu m2 = new Menu();
        m2.setId("2");

        Menu m3 = new Menu();
        m3.setId("11");
        m3.setParentId("1");

        Menu m4 = new Menu();
        m4.setId("12");
        m4.setParentId("1");

        Menu m5 = new Menu();
        m5.setId("21");
        m5.setParentId("2");

        Menu m6 = new Menu();
        m6.setId("111");
        m6.setParentId("11");

        allMenus.add(m1);
        allMenus.add(m2);
        allMenus.add(m3);
        allMenus.add(m4);
        allMenus.add(m5);
        allMenus.add(m6);

        return allMenus;
    }
}

Menu实体类:

public class Menu {
    private String id;
    private String parentId;
    private List<Menu> childMenus=new ArrayList<>();

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getParentId() {
        return parentId;
    }

    public void setParentId(String parentId) {
        this.parentId = parentId;
    }

    public List<Menu> getChildMenus() {
        return childMenus;
    }

    public void setChildMenus(List<Menu> childMenus) {
        this.childMenus = childMenus;
    }

    public void addChildMenu(Menu menu) {
        this.childMenus.add(menu);
    }

    @Override
    public String toString(){
        return "menu{id:"+this.id+",parentId:"+this.parentId+",childMenus:"+childMenus+"}";
    }
}
原文地址:https://www.cnblogs.com/BonnieWss/p/11677449.html