zoukankan      html  css  js  c++  java
  • 生成菜单树

    生成菜单树

    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+"}";
        }
    }
  • 相关阅读:
    rest_framework 认证组件 权限组件
    Django rest_framework 序列化组件
    django 跨域问题
    python的magic methods
    RESTful规范
    BBS论坛 后台管理
    BBS论坛 文章详情、点赞、评论
    BBS论坛 home主页与个人站点主页
    好用的SqlParamterList
    教你如何在实战项目中使用WCF
  • 原文地址:https://www.cnblogs.com/BonnieWss/p/11677449.html
Copyright © 2011-2022 走看看