JAVA8遍历tree

本文涉及的产品
可视分析地图(DataV-Atlas),3 个项目,100M 存储空间
简介: JAVA8遍历tree

1.数据库表image.png

  1. 代码

2.1
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/** 字典树
*/
@Data
@Builder
@NoArgsConstructor
//@AllArgsConstructor
public class DictDataVo {
private int id;
private int idP;
private String dictLabel;
private String dictValue;
private String dictType;
private List childList;

public DictDataVo(int id, int idP, String dictLabel, String dictValue, String dictType){
    this.id = id;
    this.idP = idP;
    this.dictLabel = dictLabel;
    this.dictValue = dictValue;
}

public DictDataVo(int id, int idP, String dictLabel, String dictValue, String dictType, List<DictDataVo> childList){
    this.id = id;
    this.idP = idP;
    this.dictLabel = dictLabel;
    this.dictValue = dictValue;
    this.childList = childList;
}

}
2.2 实现

/****
 * 字典树
 * @param dictType
 * @return
 */
@Override
public List<DictDataVo> selectDictDataByTypeTree(String dictType) {

    //DictDataVo dictDataVo = DictDataVo.builder().dictType("fz_yj_jcbz").build();
    DictDataVo dictDataVo = new DictDataVo();
    dictDataVo.setDictType("fz_yj_jcbz");
    List<DictDataVo> dictDataVoList = dictDataMapper.selectDictTypeTreeList(dictDataVo);
    //父节点
    List<DictDataVo> collect = dictDataVoList.stream().filter(e -> e.getIdP()==0).map(
            (e) -> {
                e.setChildList(getChildrens(e, dictDataVoList));
                return e;
            }
    ).collect(Collectors.toList());

    return collect;
}


/***
 * 子节点
 * @param root
 * @param all
 * @return
 */
public List<DictDataVo> getChildrens(DictDataVo root, List<DictDataVo> all) {
    List<DictDataVo> childen = all.stream().filter(e -> {
        return Objects.equals(e.getIdP(), root.getId());
    }).map(
            (e) -> {
                e.setChildList(getChildrens(e, all));
                return e;
            }
    ).collect(Collectors.toList());
    return childen;
}
相关实践学习
DataV Board用户界面概览
本实验带领用户熟悉DataV Board这款可视化产品的用户界面
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
相关文章
|
4月前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
1月前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
6月前
|
存储 算法 Java
Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。
【6月更文挑战第21天】Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。二叉树遍历通过访问根、左、右子节点实现。DFS采用递归遍历图的节点,而BFS利用队列按层次访问。以下是简化的代码片段:[Java代码略]
49 4
|
2月前
|
Java 程序员 编译器
Java|如何正确地在遍历 List 时删除元素
从源码分析如何正确地在遍历 List 时删除元素。为什么有的写法会导致异常,而另一些不会。
36 3
|
2月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
22 1
|
2月前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
30 6
|
3月前
|
域名解析 分布式计算 网络协议
java遍历hdfs路径信息,报错EOFException
java遍历hdfs路径信息,报错EOFException
40 3
|
4月前
|
Java 容器
07 Java数组与数组操作(定义+遍历+排序+增删改查)(上)
07 Java数组与数组操作(定义+遍历+排序+增删改查)
58 8
|
4月前
|
存储 Java API
07 Java数组与数组操作(定义+遍历+排序+增删改查)(下)
07 Java数组与数组操作(定义+遍历+排序+增删改查)
43 4
|
5月前
|
算法 Java
java使用递归及迭代方式实现前序遍历 中序遍历 后序遍历 以及实现层序遍历
java使用递归及迭代方式实现前序遍历 中序遍历 后序遍历 以及实现层序遍历
89 7