hierarchy-utils 通用树形数据工具库升级 1.0.2,增加递归遍历树形数据处理

hierarchy-utils 通用树形数据工具库升级 1.0.2,增加递归遍历树形数据处理

功能介绍

用于构建/查找具有层级关系树形数据的工具库,以解决业务中常见的树形数据处理需求

支持自定义过滤数据、排序及转换数据、打平递归树数据、递归遍历树形数据处理等

项目地址

https://github.com/joker-pper/hierarchy-utils.git

https://gitee.com/joker-pper/hierarchy-utils.git

快速使用

version可在公共仓库中获取

    <dependency>
        <groupId>io.github.joker-pper</groupId>
        <artifactId>hierarchy-utils</artifactId>
        <version>${version}</version>
    </dependency>

更新内容如下:

增加递归遍历树形数据处理 (可用于用户处理自定义业务逻辑,只需关注业务逻辑实现,无需重复实现递归逻辑)

示例:

	//获取要遍历的数据列表
    Integer rootId = -1;
    List<Menu> sourceList = MenuResolver.getResolvedWithChildrenMenuList(rootId);
    
    //调用递归遍历 (其他可参考接口功能注释)
    HierarchyEachUtils.recursionEach(sourceList, Menu::getChildren, new HierarchyEachUtils.EachCallback<Menu>() {

        @Override
        public boolean withParentList() {
            //设置启用,后续用于获取遍历元素的所有父级列表
            return true;
        }

        @Override
        public void beforeEach(List<Menu> sourceList) {
           //对源数据列表进行处理,比如有多个进行排个序?(当前方法执行时源数据列表不为空且元素个数大于0)
        }

        @Override
        public void each(int level, Menu current, Menu parent, List<Menu> parentList, List<Menu> children, boolean hasExistChildren) {

            if (hasExistChildren) {
                //存在子元素时  -- 当前进行排序子元素,进行降序
                children.sort(Comparator.comparing(Menu::getSort).reversed());
            }

            if (level == HierarchyEachUtils.FIRST_LEVEL) {
                //第一层级时 -- 没有真实存在的父元素
                System.out.println(String.format("level: %s, id: %s, sort: %s, parent id: %s, path: %s", level, current.getId(), current.getSort(), "-", current.getId()));
            } else {
            	//其他层级
                System.out.println(String.format("level: %s, id: %s, sort: %s, parent id: %s, path: %s", level, current.getId(), current.getSort(), parent.getId(), Stream.of(parentList, Collections.singletonList(current)).flatMap(Collection::stream).map(Menu::getId).map(String::valueOf)
                        .collect(Collectors.joining("-"))));

            }
        }
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值