java构建树形结构

三种方法构建Java树形结构,Stream真的厉害 平时大概率我们会构建一些树形结果返回给前端,比如菜单结构、部门列表、文件结构等,我们一般想到的就是利用递归来循环构建;现在,就我个人解决的方法如下: 原始递归 利用Java 8 Stream流进行处理(原理还是递归) Stream流升级构建 场景构建 public class TreeSelect implements Serializable { /** 节点ID */ private Long id; /** 节点名称 */ private String la. 阅读详情

实体

@Data
public class SysCategoryTree {
    private static final long serialVersionUID = 1L;

    private String id;

    /** 父级节点 */
    private String pid;

    /** 类型名称 */
    private String name;

    /** 类型编码 */
    private String code;


    @TableField(exist = false)
    private List<SysCategoryTree> nodes;

    public SysCategoryTree() {
        // 默认使用哈希表
        nodes = new ArrayList<>();
    }
}

构建树形结构

  public static List<SysCategoryTree> buildSysCategoryTree(List<SysCategoryTree> node) {
        List<SysCategoryTree> res = new ArrayList<>();
        Map<String, SysCategoryTree> map = new HashMap<>();
        node.forEach(n -> map.put(n.getId(), n));
        node.forEach(n -> {
            //表示不是根目录
            if (n.getPid() != null) {
                if (n.getPid().equals("0")) {
                    res.add(n);
                } else {
                    //get当前父级节点
                    SysCategoryTree tree = map.get(n.getPid());
                    //根据父节点未查询到上级,代表错误数据,删除
                    if (tree != null) {
                        //将当前对象添加到当前父级节点的子级节点属性中
                        tree.getNodes().add(n);
                    }
                }
            }
        });
        return res;
    }

根据节点id获取该节点下所有数据

public List<SysCategoryTree> getNodeTree(List<SysCategoryTree> resList,String pid){
		List<SysCategoryTree> sysCategoryTree = new ArrayList<>();
		for (int i = 0; i < resList.size(); i++) {
			String id = resList.get(i).getId();
			List<SysCategoryTree> nodes = resList.get(i).getNodes();
			if(id.equals(pid)){
				sysCategoryTree.add(resList.get(i));
			}
		}
		if(CollectionUtils.isEmpty(sysCategoryTree)){
			for (SysCategoryTree sysCategoryTree1:resList){
				if(CollectionUtils.isNotEmpty(sysCategoryTree1.getNodes())){
						if(CollectionUtils.isNotEmpty(getNodeTree(sysCategoryTree1.getNodes(),pid))){
							return getNodeTree(sysCategoryTree1.getNodes(),pid);
						}else{
							getNodeTree(sysCategoryTree1.getNodes(),pid);
						}
				}
			}
		}

		return sysCategoryTree;
	}
RV1126B SDK移植实战:从DDR配置到USB烧写全解析 本文详细解析了RV1126B SDK移植的核心实战流程,重点攻克了DDR初始化失败与USB烧写两大难题。文章从理解启动流程入手,提供了DDR配置错误的排查步骤、SDK编译配置要点,并深入讲解了USB烧写的完整操作与常见问题解决方案,旨在帮助开发者高效完成系统移植与稳定运行。 阅读详情

相关推荐

AGM Supra软件从零到一:国产CPLD工程创建全流程拆解

本文详细拆解了AGM Supra软件从零开始创建国产CPLD工程的全流程,包括开发环境配置、工程创建、Quartus项目转换、TCL脚本执行与编译等关键步骤。特别强调了中文路径避坑、器件型号选择等实用技巧,帮助开发者高效完成CPLD开发任务。

weixin_29158413的博客 410

树形结构——JAVA实现

一文掌握二叉树的结构及写法

码说芯语的博客 5300

高通Camera IFE时钟配置

高通Camera IFE时钟配置中的minHorizontalBlanking和minVerticalBlanking配置计算方法

一个懒癌的驱动工程师的随笔分享 6167

Java中将list转为树形结构

在系统开发过程中,可能会碰到一些需求,需要构建树形结构,数据库一般就使用父id来表示,比如构建菜单、构建地区级联、构建部门层级结构等等。虽然可以通过数据库SQL查询,但我们一般都是通过SQL一次性查询出所有数据,在程序中处理成树形结构。本文讲述如何将一个List<T> 处理成想要的树形结构。 1、自己测试过没问题的: /** * 对象List转为Tree树形结构 * * @param entityList 传进来的泛型List * @par

zlfjavahome的专栏 1万+

基于Python实现基于遥感指数的水体提取

基于Python实现基于遥感指数的水体提取

gis收藏家的博客 6146

Aras Innovator系统配置-01对象类(一)

对象类配置-对象类属性说明

企业信息化(PLM,ERP.MES) 2032

Java 树形结构目录树的几种生成方式

使用场景 🌙实体类:Menu.java public class Menu { /** * id */ public Integer id; /** * 名称 */ public String name; /** * 父id ,根节点为0 */ public Integer parentId; /** * 子节点信息 */ public Lis

newuserphb的博客 5064

【AUTOSAR-COM】-5.2-“Deadline Monitoring超时监控”-2-基于IPdu实现

目录 1 在CFG中配置Deadline Monitoring超时监控 1.1 参数说明 1.2 生成代码差异 2 通过一段测试代码看Deadline Monitoring超时监控 3 使用CAN盒观察Deadline Monitoring实际测试效果 3.1 Case 1:ECU开始工作时,没有收到Frame 3.2 Case 2:ECU工作中,接收的Frame丢失、 4 小结 5 结尾 关键字: DM=Deadline Monitoring超时监控 ComFirstTime...

「汽车电子助手」的博客 1788

Java集合转树结构(treeList)

显然,树的定义是递归的,即在树的定义中又用到了自身,树是一种递归的数据结构。当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每个集合本身又是一棵树,并且称为根的子树。树是n(n>=0)个结点的有限集。2、根据每一个根节点,与所有节点集合(数据)进行判断,当前节点是否为其下的子节点。1、首先获取所有的根节点(顶级节点),即根节点的parentId = 0。若不是,则表明该节点不属于其下子节点。4、应继续循环判断节点父子关系,直到所有节点与根节点判断完毕。

战场战魁 1985

基于注意力机制的行人重识别(Reld)模型论文解读----Relation-Aware Global Attention for Person Re-identification

任务概述:在多摄像头的复杂场景中,快速定位查找指定目标的所有结果。

qq_52053775的博客 1895

PLC集群管理:C#上位机实现10台以上分布式PLC的集中监控与指令下发

本文介绍了一套基于C# WPF开发的PLC集群管理系统,用于解决现代工业自动化产线中分布式PLC监控难题。系统采用三层解耦架构,支持100台以内不同品牌PLC的集中管理,具备批量数据采集、指令下发、实时报警等功能。核心创新点包括:1)基于异步IO的连接池管理;2)统一通信接口设计;3)寄存器合并优化算法;4)三级优先级指令队列。实际应用表明,系统数据采集延迟低于100ms,指令下发成功率99.9%,有效解决了传统单PLC监控模式存在的效率低下问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 507

java生成树形结构,支持拓展

java快速生成树形结构,支持拓展

weixin_45875060的博客 587

Python实现商品价格监控与波动分析爬虫项目

本文通过完整的代码示例和详细的技术讲解,展示了如何实现商品价格的自动监控和波动分析。该项目不仅适用于个人购物助手,还可以扩展为商家的竞品监控工具。通过结合数据抓取、存储、分析与可视化,能够帮助我们更好地理解市场趋势并做出优化决策。

2201_76125261的博客 1742

Java递归构建树形结构

​ 本文介绍Java后台构建树形结构数据的设计思路及实现,在设计过程中,仍然存在许多未能充分理解的位置,若存在错误或更好实现方案,可分享/指出,共同学习进步。

qq_43842093的博客 4645

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

通过Java构建树形结构

我这里当节点的parentId = ‘-1’ 那么这个节点就是根节点。

weixin_60382322的博客 3994

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java构建树形结构的方式

基于mybatisplus的@TableName里面的resultMap属性,当发生查询时,会根据配置的xml查询SQL进行查询。最后,来一个饭后甜点:java实现 tree结构模糊搜索功能。导入hutool的依赖,请参考hutool官网。

xw的博客 1710

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

三种方法构建Java树形结构

平时大概率我们会构建一些树形结果返回给前端,比如菜单结构、部门列表、文件结构等,我们一般想到的就是利用递归来循环构建;场景构建。

qq_58148854的博客 7844

Java 高效构建树形结构

Java高效构建树

qq_41902662的博客 6154

java 构建树形结构_JAVA 快速构建树形结构

JDK 1.8+Node 中pid 为 0 的是根节点public class Node {private int id;private int pid;private String name;private List sub = new ArrayList<>();public Node(int id, int pid) {this.id = id;this.pid = pid;}p...

weixin_39957027的博客 230

JAVA构建树形结构数据,看这一篇就够了

在一个完整的项目中,或多或少的需要构建树形结构数据并排序,不同的业务数据由于属性名称不一致通常需要写不同的方法来构建树形结构数据,那有没有一个工具类可以实现所有的业务数据调用同一个方法,返回不同的树形结构呢,

全栈行动派的博客 2673

JAVA构建树形结构通用工具类

JAVA构建树形结构通用工具类场景说明构建思路实现第一步:构建接口TreeFeature第二步:让需要构建树形结构的类实现该接口并实现方法功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 场景说明 在日常java开发过程中,经常遇到

postivedragon的博客 5218

java中的树形结构构建器

在java程序员的平时工作中除了会遇到普通的集合类型,也免不了会遇到树形结构。这种数据结构相比简单的List、Set、Map相对来说会更加复杂一些,jdk中也没有对应的数据类型可以表示。所以开发者们在面对这一类的数据结构的时候总是需要自己来构建。例如下面这个例子。 例1:权限与菜单。我们可以构想这样一个场景。在一个OA系统中,不同权限/角色的用户登录需要在前端html中展现不同...

yuhelve3308的博客 597

Java后端递归构建树形结构

记录:在Java后台利用递归思路进行构建树形结构数据,返回给前端,能以下拉菜单等形式进行展示。 简明:为了简化代码,引入Lombok的Jar包,可省略实体类set()、get()方法。 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> ...

彼岸尚有荣光在,应不断记录总结!!! 1万+

java 树的构建_Java8从构建树形结构

总体思路:利用Java8的新特性Lambda和流的map、collect,不断的递归调用得到树形结构另:如果想得到无限层的话,把level的限制放开,构造并返回自定义的数据结构就可以了代码如下public ItemCatResult queryItemCatsNew() {//声明一个存储的对象,然后构建对象ItemCatResult result=new ItemCatResult();List...

weixin_35906794的博客 1692

JAVA 快速构建树形结构

话不多说直接上代码 JDK 1.8+ Node 中pid 为 0 的是根节点 public class Node { private int id; private int pid; private String name; private List<Node> sub = new ArrayList<>(); public Node(int id, int pid) { this.id = id; .

b_just的博客 1216

通用树形结构构建工具类-Java

确保搜索结果的完整树形结构。

IT枫斗者的博客 552
上一篇: docker常用命令
下一篇: linux 挂在新硬盘
只会debug
博客等级 码龄9年 69粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值