Java构建一级二级菜单

人狠话不多直接上代码

    /**
     * 栏目菜单结构分类树
     * @return
     */
    @Override
    public List<Category> listWithTree() {
        // 1、查询所有分类
        List<Category> categoryList = categoryMapper.selectCategoryList(null);
        // 2、构建分类id与分类对象的映射关系
        Map<Long, List<Category>> categoryMap = new HashMap<>();
        for (Category category : categoryList) {
            Long parentId = category.getParentId();
            // 将 parentId 为 null 转换为 0L,表示根分类
            if (parentId == null) {
                parentId = 0L;
            }
            categoryMap.computeIfAbsent(parentId, k -> new ArrayList<>()).add(category);
        }
        // 3、构建分类树形结构
        List<Category> rootCategories = categoryMap.get(0L);
        if (rootCategories != null) {
            for (Category rootCategory : rootCategories) {
                buildCategoryTree(rootCategory, categoryMap);
            }
        }
        return rootCategories;
    }

    /**
     * 递归构建分类树形结构
     */
    private void buildCategoryTree(Category category, Map<Long, List<Category>> categoryMap) {
        List<Category> children = categoryMap.get(category.getCategoryId());
        if (children != null) {
            for (Category child : children) {
                buildCategoryTree(child, categoryMap);
            }
        }
        category.setCategory(children);
    }

注意!!!记得在自己的实体类中加一个List<类本身> XXXX 字段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值