树形结构数据获取

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

        return lecel1Menus;
    }
    //递归查找所有菜单的子菜单
    private List getChildrens(CategoryEntity root,List all){
      List child = all.stream().filter(categoryEntity -> {
           return categoryEntity.getParentCid().equals(root.getCatId());
        }).map(categoryEntity -> {
            //1.找到子菜单
            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 child;
    }

 

你可能感兴趣的:(树形结构数据获取)