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

}

相关推荐
KIDAKN11 分钟前
java--怎么定义枚举类
java·开发语言
何中应11 分钟前
第一个人工智能(AI)问答Demo
java·人工智能·语言模型
东阳马生架构1 小时前
商品中心—3.商品可采可补可售的技术文档
java
bxlj_jcj1 小时前
解锁Java线程池:性能优化的关键
java·性能优化·多线程
海棠一号1 小时前
JAVA理论第七章-MYSQL
java·数据库·mysql
网安INF2 小时前
CVE-2024-23897源码分析与漏洞复现(Jenkins 任意文件读取)
java·web安全·网络安全·jenkins·漏洞
oioihoii2 小时前
C++11列表初始化:从入门到精通
java·开发语言·c++
野生技术架构师2 小时前
SpringBoot集成Tess4j :低成本解锁OCR 图片识别能力
spring boot·后端·ocr
qqxhb2 小时前
零基础设计模式——行为型模式 - 命令模式
java·设计模式·go·命令模式