Hutool工具类使用

一、TreeUtil构建树形结构

1、方式一

public static void main(String[] args) {
        List<TreeNode<String>> nodeList = CollUtil.newArrayList();
        nodeList.add(new TreeNode<>("1", "0", "系统管理", 5));
        nodeList.add(new TreeNode<>("11", "1", "用户管理", 222222));
        nodeList.add(new TreeNode<>("111", "11", "用户添加", 0));
        nodeList.add(new TreeNode<>("2", "0", "店铺管理", 1));
        nodeList.add(new TreeNode<>("21", "2", "商品管理", 44));
        nodeList.add(new TreeNode<>("221", "2", "商品管理2", 2));
        // 0表示最顶层的id是0
        List<Tree<String>> treeList = TreeUtil.build(nodeList, "0");
        treeList.forEach(v -> {
            System.out.println(JSON.toJSONString(v));
        });
        //{"id":"2","parentId":"0","weight":1,"name":"店铺管理","children":[{"id":"221","parentId":"2","weight":2,"name":"商品管理2"},{"id":"21","parentId":"2","weight":44,"name":"商品管理"}]}
        //{"id":"1","parentId":"0","weight":5,"name":"系统管理","children":[{"id":"11","parentId":"1","weight":222222,"name":"用户管理","children":[{"id":"111","parentId":"11","weight":0,"name":"用户添加"}]}]}
    }

2、方式二

@Data
public class SysMenuOutDto {
    private Long id;
    private String menuName;
    private String menuCode;
    private String parentCode;
    private Integer menuSort;
    private String icon;
}

public static void main(String[] args) {
        List<SysMenuOutDto> list = new ArrayList<>();

        SysMenuOutDto sysMenuOutDto1 = new SysMenuOutDto();
        sysMenuOutDto1.setId(1l);
        sysMenuOutDto1.setMenuCode("1");
        sysMenuOutDto1.setMenuName("系统管理");
        sysMenuOutDto1.setMenuSort(1);
        sysMenuOutDto1.setParentCode("root");
        sysMenuOutDto1.setIcon("icon1");

        SysMenuOutDto sysMenuOutDto11 = new SysMenuOutDto();
        sysMenuOutDto11.setId(11l);
        sysMenuOutDto11.setMenuCode("11");
        sysMenuOutDto11.setMenuName("用户管理");
        sysMenuOutDto11.setMenuSort(1);
        sysMenuOutDto11.setParentCode("1");
        sysMenuOutDto11.setIcon("icon11");

        SysMenuOutDto sysMenuOutDto2 = new SysMenuOutDto();
        sysMenuOutDto2.setId(2l);
        sysMenuOutDto2.setMenuCode("2");
        sysMenuOutDto2.setMenuName("入住管理");
        sysMenuOutDto2.setMenuSort(2);
        sysMenuOutDto2.setParentCode("root");
        sysMenuOutDto2.setIcon("icon2");

        SysMenuOutDto sysMenuOutDto21 = new SysMenuOutDto();
        sysMenuOutDto21.setId(221l);
        sysMenuOutDto21.setMenuCode("21");
        sysMenuOutDto21.setMenuName("能力评估");
        sysMenuOutDto21.setMenuSort(1);
        sysMenuOutDto21.setParentCode("2");
        sysMenuOutDto21.setIcon("icon21");

        SysMenuOutDto sysMenuOutDto22 = new SysMenuOutDto();
        sysMenuOutDto22.setId(22l);
        sysMenuOutDto22.setMenuCode("22");
        sysMenuOutDto22.setMenuName("定制服务");
        sysMenuOutDto22.setMenuSort(2);
        sysMenuOutDto22.setParentCode("2");
        sysMenuOutDto22.setIcon("icon22");

        list.add(sysMenuOutDto1);
        list.add(sysMenuOutDto11);
        list.add(sysMenuOutDto2);
        list.add(sysMenuOutDto21);
        list.add(sysMenuOutDto22);

        TreeNodeConfig MENU_CONFIG = new TreeNodeConfig();
        MENU_CONFIG.setWeightKey("menuSort");
        MENU_CONFIG.setIdKey("menuCode");
        MENU_CONFIG.setParentIdKey("parentCode");
        MENU_CONFIG.setNameKey("menuName");

        List<Tree<String>> build = TreeUtil.build(
                list,
                "root",
                MENU_CONFIG,
                (treeNode, tree) -> {
                    tree.setId(treeNode.getMenuCode());
                    tree.setParentId(treeNode.getParentCode());
                    tree.setName(treeNode.getMenuName());
                    tree.setWeight(treeNode.getMenuSort());
                    tree.putExtra("id", treeNode.getId());
                    tree.putExtra("icon", treeNode.getIcon());
                });

        build.forEach(v -> {
            System.out.println(JSON.toJSONString(v));
        });
    }


//{"menuCode":"1","parentCode":"root","menuName":"系统管理","menuSort":1,"id":1,"icon":"icon1","children":[{"menuCode":"11","parentCode":"1","menuName":"用户管理","menuSort":1,"id":11,"icon":"icon11"}]}
//{"menuCode":"2","parentCode":"root","menuName":"入住管理","menuSort":2,"id":2,"icon":"icon2","children":[{"menuCode":"21","parentCode":"2","menuName":"能力评估","menuSort":1,"id":221,"icon":"icon21"},{"menuCode":"22","parentCode":"2","menuName":"定制服务","menuSort":2,"id":22,"icon":"icon22"}]}
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值