栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java生成Tree数据格式工具

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java生成Tree数据格式工具

Java生成Tree数据格式工具
    • 一、定义ITree接口
    • 二、继承ITree接口并实现方法
    • 三、工具类编写
    • 四、工具类调用

现在系统有很多模块需要tree格式的json,应次需求搞一个通用的工具,该暂时只适合有父子关系的对象。

一、定义ITree接口
public interface ITree {

    
    Integer getId();

    
    Integer getParentId();

    
    List getChildren();

    
    void setChildren(List children);
}
二、继承ITree接口并实现方法
@Data
public class MenusVo implements ITree {
    
    private Integer id;

    
    private String authName;

    
    private String path;

    
    private Integer parentId;

    
    private List children;
}
三、工具类编写
public class ConvertUtil {

    private ConvertUtil() {
    }

	
    public static  List convertTree(List resource, Predicate predicate) {
        List result = resource.stream().filter(predicate).collect(Collectors.toList());
        // 移出父级元素
        resource.removeIf(result::contains);
        ConvertUtil.setChilder(result, resource);
        return result;
    }

    
    private static  void setChilder(List parentList, List elements) {
        if (CollUtil.isEmpty(elements)) {
            return;
        }
        // 遍历父级
        parentList.forEach(parent -> {
            List childer = elements.stream().filter(element -> parent.getId().equals(element.getParentId())).collect(Collectors.toList());
            parent.setChildren(childer);
            elements.removeIf(childer::contains);
            setChilder(childer, elements);
        });
    }
}
四、工具类调用
public ResponseEntity tree() {
	List menusList = ConvertUtil.convertList(menusService.list(null), MenusVo.class);
    List result = ConvertUtil.convertTree(menusList, menusVo -> 0 == menusVo.getParentId());
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/351171.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号