递归生成树形结构菜单

 public List<CategoryEntity> listWithTree() {
        //1、查出所有菜单
        List<CategoryEntity> categoryEntities = categoryDao.selectList(null);
        //2、组装成父子的树形结构
            //2.1 找到所有的一级分类
            List<CategoryEntity> level1Menus = categoryEntities.stream().filter(categoryEntity -> {
                return categoryEntity.getParentCid() == 0;
            }).map(menu->{
                menu.setChildren(getChildrens(menu,categoryEntities));
                return menu;
            }).sorted((menu1,menu2)->{
                return (menu1.getSort()==null?0:menu1.getSort())-(menu2.getSort()==null?0:menu2.getSort());
            })
              .collect(Collectors.toList());
            return level1Menus;
    }

    //递归找到当前菜单的子菜单
    private List<CategoryEntity> getChildrens(CategoryEntity  root,List<CategoryEntity> all){
        List<CategoryEntity> children = all.stream().filter(categoryEntity -> {
            return categoryEntity.getParentCid().equals(root.getCatId());
        }).map(categoryEntity -> {
            categoryEntity.setChildren(getChildrens(categoryEntity,all));
            return categoryEntity;
        }).sorted((menu1,menu2)->{
            return (menu1.getSort()==null?0:menu1.getSort())-(menu2.getSort()==null?0:menu2.getSort());
        }).collect(Collectors.toList());
        return children;
    }

上一篇:谷粒商城——递归查询子菜单方法分析


下一篇:23.Vue Router路由基本使用