java查询生成树形菜单

 1     public List<CategoryEntity> treeList() {
 2         List<CategoryEntity> categoryEntities = baseMapper.selectList(null);
 3         
 4         List<CategoryEntity> treeList = categoryEntities.stream()
 5                 // 查找一级分类
 6                 .filter(categoryEntity -> categoryEntity.getParentCid() == 0)
 7                 // 递归设置二级分类
 8                 .map(categoryEntity -> {
 9                     categoryEntity.setChildren(getChildrens(categoryEntity, categoryEntities));
10                     return categoryEntity;
11                 })
12                 // 根据sort字段进行排序
13                 .sorted((categoryEntity1, categoryEntity2) -> {
14                     return (categoryEntity1.getSort() == null ? 0 : categoryEntity1.getSort()) - (categoryEntity2.getSort() == null ? 0 : categoryEntity2.getSort());
15                 })
16                 // 收集处理完成的数据{parent: children[]}
17                 .collect(Collectors.toList());
18         return treeList;
19     }
20 
21     private List<CategoryEntity> getChildrens(CategoryEntity root, List<CategoryEntity> categoryEntities) {
22         /**
23         CategoryEntity root 当前节点
24         List<CategoryEntity> categoryEntities 要进行匹配的集合
25         */
26         List<CategoryEntity> children = categoryEntities.stream()
27                 .filter(categoryEntity -> categoryEntity.getParentCid() == root.getCatId())
28                 .map(categoryEntity -> {
29                     categoryEntity.setChildren(getChildrens(categoryEntity, categoryEntities));
30                     return categoryEntity;
31                 })
32                 .sorted((categoryEntity1, categoryEntity2) -> {
33                     return (categoryEntity1.getSort() == null ? 0 : categoryEntity1.getSort()) - (categoryEntity2.getSort() == null ? 0 : categoryEntity2.getSort());
34                 })
35                 .collect(Collectors.toList());
36         return children;
37     }
posted @ 2022-09-20 17:18  奶油炒白菜  阅读(185)  评论(0编辑  收藏  举报