JAVA8遍历tree

本文涉及的产品
可视分析地图(DataV-Atlas),3 个项目,100M 存储空间
数据可视化DataV,5个大屏 1个月
简介: 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;
}
相关实践学习
Github实时数据分析与可视化
基于Github Archive公开数据集,将项目、行为等20+种事件类型数据实时采集至Hologres进行分析,并搭建可视化大屏。
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
相关文章
|
2月前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
4月前
|
存储 算法 Java
Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。
【6月更文挑战第21天】Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。二叉树遍历通过访问根、左、右子节点实现。DFS采用递归遍历图的节点,而BFS利用队列按层次访问。以下是简化的代码片段:[Java代码略]
40 4
|
7天前
|
域名解析 分布式计算 网络协议
java遍历hdfs路径信息,报错EOFException
java遍历hdfs路径信息,报错EOFException
21 3
|
5月前
|
Java
Tree Traversals Again(Java语言)(先序和中序创建二叉树)(遍历树)
Tree Traversals Again(Java语言)(先序和中序创建二叉树)(遍历树)
39 4
|
2月前
|
Java 容器
07 Java数组与数组操作(定义+遍历+排序+增删改查)(上)
07 Java数组与数组操作(定义+遍历+排序+增删改查)
35 8
|
2月前
|
存储 Java API
07 Java数组与数组操作(定义+遍历+排序+增删改查)(下)
07 Java数组与数组操作(定义+遍历+排序+增删改查)
32 4
|
3月前
|
算法 Java
java使用递归及迭代方式实现前序遍历 中序遍历 后序遍历 以及实现层序遍历
java使用递归及迭代方式实现前序遍历 中序遍历 后序遍历 以及实现层序遍历
70 7
|
2月前
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
65 0
|
4月前
|
Java
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
44 2
|
4月前
|
缓存 Java 测试技术
探讨Java中遍历Map集合的最快方式
探讨Java中遍历Map集合的最快方式
49 1
下一篇
无影云桌面