java8 树类型转换

复制代码
/**
 * 创建树
 *
 * @param list       列表
 * @param parentRoot 父根
 * @return {@link List}<{@link TreeLabelDto}>
 */
public static List<TreeLabelDto> createTree(List<TreeLabelDto> list, String parentRoot) {
    Map<String, List<TreeLabelDto>> rootList = list.stream().filter(treeDto -> !treeDto.getParentId().equals(parentRoot)).collect(Collectors.groupingBy(treeDto -> treeDto.getParentId()));
    list.forEach(treeDto -> treeDto.setChildren(rootList.get(treeDto.getId())));
    return list.stream().filter(treeDto -> treeDto.getParentId().equals(parentRoot)).collect(Collectors.toList());
}

package com.stock.mr.enterprise.common.dto;

import net.logstash.logback.encoder.org.apache.commons.lang3.builder.EqualsBuilder;

import net.logstash.logback.encoder.org.apache.commons.lang3.builder.HashCodeBuilder;

import org.apache.pulsar.shade.com.fasterxml.jackson.annotation.JsonBackReference;

import org.apache.pulsar.shade.com.fasterxml.jackson.annotation.JsonManagedReference;

import java.io.Serializable;

import java.util.List;

public class TreeLabelDto implements Serializable {

private static final long serialVersionUID = 2434282106176669573L;

private String id;

private String parentId;

@JsonBackReference

private TreeLabelDto parent;

@JsonManagedReference

private List children;

private String name;

private String label;

private int level;

private int sort;

private String rootId;

private String type;

private boolean isLeaf;

private String description;

private String flag;

private String value;

复制代码
public TreeLabelDto() {
}

public TreeLabelDto(String id, String parentId, String name) {
    this.id = id;
    this.parentId = parentId;
    this.name = name;
}

public String getDescription() {
    return this.description;
}

public void setDescription(String description) {
    this.description = description;
}

public String getId() {
    return this.id;
}

public void setId(String id) {
    this.id = id;
}

public String getParentId() {
    return this.parentId;
}

public void setParentId(String parentId) {
    this.parentId = parentId;
}

public void setRootId(String rootId) {
    this.rootId = rootId;
}

public String getRootId() {
    return this.rootId;
}

public TreeLabelDto getParent() {
    return this.parent;
}

public void setParent(TreeLabelDto parent) {
    this.parent = parent;
}

public String getName() {
    return this.name;
}

public void setName(String name) {
    this.name = name;
}

public String getLabel() {
    return label;
}

public void setLabel(String label) {
    this.label = label;
}

public int getLevel() {
    return this.level;
}

public void setLevel(int level) {
    this.level = level;
}

public String getType() {
    return this.type;
}

public List<TreeLabelDto> getChildren() {
    return this.children;
}

public void setChildren(List<TreeLabelDto> children) {
    this.children = children;
}

public void setType(String type) {
    this.type = type;
}

public boolean isLeaf() {
    return this.isLeaf;
}

public void setLeaf(boolean isLeaf) {
    this.isLeaf = isLeaf;
}

public int getSort() {
    return this.sort;
}

public void setSort(int sort) {
    this.sort = sort;
}

public String getFlag() {
    return this.flag;
}

public void setFlag(String flag) {
    this.flag = flag;
}

public int hashCode() {
    return (new HashCodeBuilder(17, 37)).append(this.id).append(this.parentId).toHashCode();
}

public boolean equals(Object obj) {
    boolean isEqual = false;
    if (obj != null && TreeLabelDto.class.isAssignableFrom(obj.getClass())) {
        TreeLabelDto TreeLabelDto = (TreeLabelDto)obj;
        isEqual = (new EqualsBuilder()).append(this.getId(), TreeLabelDto.getId()).append(this.getParentId(), TreeLabelDto.getParentId()).isEquals();
    }

    return isEqual;
}

public String toString() {
    return "Node {id=" + this.id + ", parentId=" + this.parentId + ", children=" + this.children + ", name=" + this.name + ", level =" + this.level + "}";
}

public String getValue() {
    return this.value;
}

public void setValue(String value) {
    this.value = value;
}

}

相关推荐
码士集团小青6 小时前
SpringBoot 集成缓存性能之王 Caffeine
spring boot·后端·缓存
凤凰院凶涛QAQ7 小时前
《Java版数据结构 & 集合类剖析》Map & Set & 反射:“从哈希碰撞到红黑树转换,反射帮你扒开 HashMap 的桶数组看个究竟”
java·数据结构·算法
H.莓飛7 小时前
【数据结构】排序_OJ题(一):计数、桶与排序后的处理
java·开发语言·数据结构
wangchunyu1148 小时前
JAVA AQS与Lock实现原理(含CAS)
java·开发语言·word
w_zero_one9 小时前
算法--模拟
java·数据结构·算法
Javatutouhouduan9 小时前
阿里1658页Java面试题总结(含答案)
java·高并发·java面试·java面试题·后端开发·java程序员·java八股文
秋天的怀念_David9 小时前
算法一千零一夜 · 第十三夜 幻方,武侠世界里的数学迷宫
java·程序人生·算法
专业程序开发源10 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
秋天的怀念_David10 小时前
算法一千零一夜 · 第十四夜 幻方与奇妙的二进制
java·程序人生·算法
thefool11226610 小时前
网络编程^
java