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;
}

}

相关推荐
雷神乐乐15 分钟前
File.separator与File.separatorChar的区别
java·路径分隔符
小刘|19 分钟前
《Java 实现希尔排序:原理剖析与代码详解》
java·算法·排序算法
逊嘘38 分钟前
【Java语言】抽象类与接口
java·开发语言·jvm
morris1311 小时前
【SpringBoot】Xss的常见攻击方式与防御手段
java·spring boot·xss·csp
七星静香1 小时前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
Jacob程序员1 小时前
java导出word文件(手绘)
java·开发语言·word
ZHOUPUYU1 小时前
IntelliJ IDEA超详细下载安装教程(附安装包)
java·ide·intellij-idea
stewie61 小时前
在IDEA中使用Git
java·git
Elaine2023912 小时前
06 网络编程基础
java·网络
G丶AEOM2 小时前
分布式——BASE理论
java·分布式·八股