树形结构的工具类TreeUtil

这个地方是以null为根节点,相关以null或者0自己在TreeUtil中加代码,就行
基础类

package com.jm.common.entity;import lombok.Data;import java.util.ArrayList;
import java.util.List;/*** @Author:JianWu* @Date: 2025/3/26  9:02*/
@Data
public class BaseTree <T> {private Integer id;private Integer parentId;private List<T> children = new ArrayList<>();
}

工具类

package com.jm.common.util;import com.jm.common.entity.BaseTree;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** @Author:JianWu* @Date: 2025/3/25  17:56*/
public class TreeUtils {/*** 将扁平化的 List 转换为树形结构** @param list 扁平化的节点列表* @return 树形结构的根节点列表*/public static <T extends BaseTree> List<T> buildTree(List<T> list) {// 用于存储所有节点的映射表Map<Integer, T> nodeMap = new HashMap<>();// 用于存储根节点的列表List<T> roots = new ArrayList<>();// 将所有节点放入映射表for (T node : list) {nodeMap.put(node.getId(), node);}// 构建树形结构for (T node : list) {Integer parentId = node.getParentId();if (parentId == null) {// 如果 parentId 为 null,说明是根节点roots.add(node);} else {// 否则,找到父节点并添加到其子节点列表T parent = nodeMap.get(parentId);if (parent != null) {parent.getChildren().add(node);}}}return roots;}
}

调用类

public List<DictDataTreeResp> getDictDataTree() {List<DictDataTreeResp> allDictDataList = baseMapper.getTypeDataList();List<DictDataTreeResp> dictDataTreeResps = TreeUtils.buildTree(allDictDataList);return dictDataTreeResps;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频联网平台智慧运维系统:智能时代的城市视觉中枢

引言&#xff1a;破解视频运维的"帕累托困境" 在智慧城市与数字化转型浪潮中&#xff0c;全球视频监控设备保有量已突破10亿台&#xff0c;日均产生的视频数据量超过10万PB。然而&#xff0c;传统运维模式正面临三重困境&#xff1a; 海量设备管理失序&#xff1a;…

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例9,TableView16_09 嵌套表格拖拽排序

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例9,TableView16_09 嵌…

QML中使用Image显示图片和使用QQuickItem显示图片

在QML中显示图片时&#xff0c;Image元素和自定义QQuickItem有不同的特性和适用场景。以下是两者的详细对比及性能分析&#xff1a; 1. Image 元素 优点&#xff1a; 声明式语法&#xff1a;简单直观&#xff0c;适合静态图片或简单动态需求 Image {source: "image.png&…

【力扣刷题|第十七天】0-1 背包 完全背包

目标和 力扣题目网址:目标和 这道题我们先用回溯的思想来做。首先我们设正数和为S&#xff0c;数组和为N&#xff0c;目标值为T&#xff0c;那么S-(N-S)T化简之后可以得S(TN)/2即选择的正数个数为偶数&#xff0c;而且NT也为偶数&#xff0c;那么第一个判断条件我们就有了&…

【Linux网络与网络编程】01.初识网络

一、计算机网络的发展历史 计算机是人的工具&#xff0c;人要协同工作&#xff0c;注定了网络的产生是必然的。 二、协议 计算机之间的传输媒介是光信号和电信号&#xff0c;通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息&#xff0c;要想传递各种不同…

使用 Python 进行链上数据监控:让区块链数据触手可及

使用 Python 进行链上数据监控:让区块链数据触手可及 区块链技术正以前所未有的速度改变着各行各业,特别是在金融、供应链、物联网和智能合约等领域的应用,已经成为了一种新常态。然而,随着区块链网络的快速扩展和去中心化特性的不断强化,数据的可视化与监控变得愈发重要…

【SMBIOS数据块类型列表】

SMBIOS数据块类型列表 SMBIOS数据块类型列表**SMBIOS 数据块类型列表****如何查看实际的 SMBIOS 数据块&#xff1f;****总结** SMBIOS数据块类型列表 在 SMBIOS&#xff08;System Management BIOS&#xff09;中&#xff0c;Type 是用来标识不同类型的数据块的。每种类型对应…

【测试】每日3道面试题 3/30

每日更新&#xff0c;建议关注收藏点赞。 白盒测试逻辑覆盖标准&#xff1f;哪种覆盖标准覆盖率最高&#xff1f; 5种。语句覆盖、分支/判定覆盖、条件覆盖、条件组合覆盖【覆盖率最高&#xff0c;所有可能条件组合都验证】、路径覆盖【理论上最高&#xff0c;但实际很难实现】…

NFS挂载异常排查记录

互相PING服务器看是否通&#xff1b;在ubuntu下看下服务器是否正常运行。导出目录是否导出了。最后发现在挂载目录的地方目录路径和后面没有加空格。

1--当「穷举」成为艺术:CTF暴力破解漏洞技术从入门到入刑指南(知识点讲解版)

当「穷举」成为艺术&#xff1a;CTF暴力破解漏洞技术从入门到入刑指南 引言&#xff1a;论暴力破解的哲学意义 “世界上本没有漏洞&#xff0c;密码设得简单了&#xff0c;便成了漏洞。” —— 鲁迅&#xff08;并没有说过&#xff09; 想象你是个不会撬锁的小偷&#xff0c;面…

Java实战:实现用户的登录注册功能

系列文章目录 Java文件 I/O流的操作实战和高级UI组件和事件监听的综合 文章目录 系列文章目录前言一、大致流程思路分析&#xff1a;二、定义用户类&#xff1a;三、服务层的实现&#xff1a; 1.保护用户数据功能的实现2.登录操作的实现 四、实现用户的注册界面&#xff1a; 大…

SQLAlchemy 支持特殊字符

postgresql 实践 pydantic 实践&#xff08;一&#xff09;基础 pydantic 实践&#xff08;二&#xff09;数据校验 SQLAlchemy 介绍与实践 SQLAlchemy 支持特殊字符 SQLAlchemy 支持特殊字符 1. 字符集介绍分析2. MySQL 支持特殊字符2.1. 更新 MySQL 字符集为 utf8mb42.2 更新…

如何看待职场中的“向上管理”

向上管理的本质,是提供一份更精确的人力产品说明书, 利用市场的逻辑,引导领导,按照你的心意,使用你这款产品。 公司获得更高的产出,领导获得更多的成果,你获得了自由支配的时间, 这是一场正和博弈。 ​ 图片来源:网络 (1)具体案例: 把自己当成一款产品,使用者…

AIOHTTP

文章目录 AIOHTTP主要特点库安装在一个命令中安装所有加速 入门客户端示例服务器示例&#xff1a; 开发模式aiohttp 3 有什么新功能&#xff1f;依赖关系 客户端快速入门发起请求在 URL 中传递参数响应内容和状态码二进制响应内容JSON 请求 注意JSON 响应内容流式响应内容更复杂…

JavaFX基础- Button 的基本使用

说明 本文记录一下对Button的基本使用&#xff0c;包括但不限于 样式的设置&#xff0c;事件的监听等。 按钮样式的设置 方式一 &#xff1a; Java代码的方式 // 创建一个按钮Button button new Button("按钮");// 设置按钮的位置button.setLayoutX(50);button.set…

DeepSeek-R1国产大模型实战:从私有化部署到内网穿透远程使用全攻略

文章目录 前言1. 安装Ollama2. 安装DeepSeek-r1模型3. 安装图形化界面3.1 Windows系统安装Docker3.2 Docker部署Open WebUI3.3 添加Deepseek模型 4. 安装内网穿透工具5. 配置固定公网地址 前言 最近&#xff0c;国产AI界的黑马——Deepseek&#xff0c;简直火得一塌糊涂。不过…

openwrt24.10.0版本上安装istoreOS的屏幕监控插件

lcdsimple 插件支持在软路由下面显示统计信息到 HDMI 或者 VGA 上。 手动安装方法&#xff1a; 保证 quickstart 版本大于 0.9.7 安装 lcdsimple 具体方法&#xff1a; opkg update opkg install quickstart opkg install lcdsimple 手动下载 QUICKSTART 跟 LCD SIMPLE&…

卷积神经网络 - ResNet(残差网络)

残差网络(Residual Network&#xff0c;ResNet)通过给非线性的卷积层增加直连边 (Shortcut Connection)(也称为残差连接(Residual Connection))的方式来提高信息的传播效率。 这是一种特殊的深度神经网络结构&#xff0c;由 Kaiming He 等人在 2015 年提出&#xff0c;目的是解…

质因数个数--欧拉函数中统计纯素数

和互质数不同&#xff0c;这里统计的是纯素数部分 就是x/i那一部分 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<ll,int> PII; int n,m,k; ll eular(ll x) { ll an0;ll px;for(ll i2;i*i<x;i){if(x%i…

2025年3月电子学会c++五级真题

结绳 #include <bits/stdc.h> using namespace std;int n,a[10010];int main() {cin>>n;for(int i 0;i<n;i){cin>>a[i];}sort(a0,an);//将a数组从小到大排序double sum 0;for(int i 0;i<n;i){sum (suma[i])/2;}cout<<(int)sum;return 0; } 最…