Hutool 树结构工具TreeUtil实际项目(生产环境已验证)使用示例

使用 Hutool的 TreeUtil 工具类


数据准备
数据准备

public List<Tree<String>> selectTreeList(SpcArea spcArea) {
        List<SpcArea> spcAreaList = selectList(spcArea);
        // 构建node列表
        List<TreeNode<String>> nodeList = spcAreaList.stream().map(spcAreaDO -> {
            Map<String, Object> map = BeanUtil.beanToMap(spcAreaDO);
            String areaIdStr = String.valueOf(spcAreaDO.getAreaId());
            map.put("areaId", areaIdStr);
            return new TreeNode<String>().setId(areaIdStr)
                    .setName(spcAreaDO.getName())
                    .setParentId(String.valueOf(spcAreaDO.getParentAreaId()))
                    .setExtra(map);
        }).collect(Collectors.toList());

        //配置
        TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
        // 自定义属性名
        treeNodeConfig.setIdKey("areaId");
        treeNodeConfig.setChildrenKey("childrenNode");

        //转换器 "1" 为根节点id
        List<Tree<String>> treeNodes = TreeUtil.build(nodeList, "1", treeNodeConfig,
                (treeNode, tree) -> {
                    tree.setId(String.valueOf(treeNode.getId()));
                    tree.setParentId(String.valueOf(treeNode.getParentId()));
                    tree.setName(treeNode.getName());
                    // 扩展属性 ...
                    treeNode.getExtra().forEach(tree::putExtra);
                });
        return treeNodes;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值