关于hutool TreeUtil基本使用

树结构工具-TreeUtil

部门树菜单树是日常开发中必不可少需要的.由于一般这种结构需要运行无限嵌套下级,所以查询时需要使用递归算法来构建数据结构,对于逻辑较弱的小伙伴极其不友好.

递归算法写法 :

java 关于菜单树,部门树,递归算法(两种)_kevinChen2018的博客-CSDN博客_java菜单递归算法

最近发现hutool竟然有这种api,可以大大的缩减开发的时间,于是研究了一下分享下基础用法.

首先需要数据,一般这种数据结构需要一个字段parentId就是上级id.

数据库设计 :

使用TreeUtil前先引入 hutool  的maven

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.20</version>
</dependency>

注意使用前必须确认数据正确,没有类似 parentId等于1 id也是等于1 这种数据,否则treeUtil会构建数据无效

  //查询所有数据
        List<OrganizationDepartment> departments = deptService.selectALL();

        TreeNodeConfig config = new TreeNodeConfig();
        //config可以配置属性字段名和排序等等
        //config.setParentIdKey("parentId");
        //config.setDeep(20);//最大递归深度  默认无限制
        List<Tree<Integer>> treeNodes = TreeUtil.build(departments, 0, config, (object, tree) -> {
            tree.setId(object.getId());//必填属性
            tree.setParentId(object.getParentId());//必填属性
            tree.setName(object.getName());
            tree.setWeight(object.getIndex());//更新一波,weight为排序字段,不过测试时子级好像并没有生效

            // 扩展属性 ...
            //tree.putExtra("children",object.getChildren());
        });

        log.println(JSONUtil.toJsonStr(treeNodes));

    }

最终数据结构

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值