Java 平铺列表转为树形结构
在业务中往往有一些数据是有层级结构的,比如数据表中原始数据如下形式
id | name | parentId |
---|---|---|
1 | 1 | null |
2 | 1-1 | 1 |
3 | 1-1-1 | 2 |
4 | 1-1 | 1 |
想要将平铺的数据变成有层次的树形结构,这里分享一个非递归列表转为树形结构的思路方法。
基本的数据结构
@Data
public class Result implements Serializable {private List<Result> children;//父idprivate Integer parentId;//当前Idprivate Integer id;private String name;}
转换方法
//sourceList 平铺的原始数据集合
public List<Result> list2Tree(List<Result> sourceList) {if (CollectionUtils.isEmpty(sourceList)) {return Collections.emptyList();}List<Result> resultList = new ArrayList<>();//将数据封装成树形结构Map<Integer, Result> map = new HashMap<>();for (Result data : sourceList) {map.put(data.getId(), data);}for (Result data : sourceList) {Result obj = map.get(data.getParentId());if (obj != null) {List<Result> children = obj.getChildren();if (children == null || children.isEmpty()) {children = new ArrayList<>();}children.add(data);obj.setChildren(children);} else {resultList.add(data);}}return resultList;}
经过list2Tree
方法转换之后,原始数据就被转为有层级的树形结构了。
原始数据json形式
[{"id": 1,"name": "1","parentId": null
}, {"id": 2,"name": "1-1","parentId": 1
}, {"id": 3,"name": "1-1-1","parentId": 2
}, {"id": 4,"name": "1-1","parentId": 1
}]
转完之后 树形结构
[{"id": 1,"name": "1","children": [{"id": 2,"name": "1-1","parentId": 1,"children": [{"id": 3,"name": "1-1-1","parentId": 2}]}, {"id": 4,"name": "1-1","parentId": 1}]
}]
Java 平铺列表转为树形结构相关推荐
- 每天一道LeetCode-----将二叉树原地平铺成链式结构
Flatten Binary Tree to Linked List 原题链接Flatten Binary Tree to Linked List 给定一个二叉树,将其原地平铺成链式结构(按先序遍历的 ...
- JavaScript将数组转为树形结构
JavaScript将数组转为树形结构 1.需求 后台给了一个这样的数据让咱前端去转换为树形结构(没有重复数据).不多说,先来看看给了一个怎样的数组数据,转换为怎样的树形结构. 服务器传过来的数组 c ...
- java 树结构_Java通用tree树形结构
前言 现在大部分都是后端封装树形结构,第一次做的时候想从网上找通用,发现大部分都是要用类的get/set方法,不一样就要改,毕竟懒,改就改改,后来发现部门要,地区要,分类要,于是想着就把之前的用注解和 ...
- 博客系统评论模块列表转树形结构
文章目录 简单介绍 一.打印效果 二.数据库表结构 三 实体 四.代码实现 2.1 获取树形结构 2.2 添加子节点[回复评论] 简单介绍 一.打印效果 {"msg": " ...
- java实现处理无限层级树形结构
树形结构在实际业务中是很经常遇到的,比如说机构.菜单.部门等等业务就会经常遇到层级关系.一般层级处理,有两种方式 (1)将所有的数据返回给前端,由前端处理,组装成树形结构,别担心,前端有组件的,只要后 ...
- java—stream流递归实现树形结构
一.在项目开发中,经常会遇到像菜单式的页面,如下图 数据表结构一般像一个树形结构一样 对应的Model体 @Data //代替get.set方法 @ApiModel("知识园地视图" ...
- java 通用扁平数据转换成树形结构
大家好,我是入错行的bug猫.(http://blog.csdn.net/qq_41399429,谢绝转载) 所谓树形结构,就是上级节点中,包含若干子节点,然后子节点中又包含其子节点,一般是没有层级次 ...
- java swing 树_JavaSwing实现树形结构 | 学步园
一.Applet package com.jy.applet.day1206; import java.awt.Container; import javax.swing.JApplet; impor ...
- JavaScript将扁平化数据转为树形结构
首先给你一个数组list如下: var arr = [{ name: '权限管理', id: 1, parentId: 0 },{ name: '角色管理', id: 1000, parentId: ...
最新文章
- j2ee性能调优之最小化资源压力测试法则
- 面向对象(下)知识点
- HDU1520 Anniversary party 树形动态规划
- python多线程处理数据库_在flask框架下利用Python的threading或thread多线程库如何操作数据库?...
- 通过制作数字桌面游戏和Web应用程序学习JavaScript
- 【蓝桥杯官网试题 -算法训练】素因子去重(数学,数论,因子约数)
- Django中使用缓存
- oracle 建分区索引_ORACLE 创建组合分区索引
- 云上持续交付实践系列1 --- java 篇
- git之配置在Terminal显示git分支
- 高性能服务器架构 的几个注意点 (High-Performance Server Architecture)
- alsa buffer原理_alsa音频开发全攻略
- Win11怎么卸载软件?Win11彻底卸载软件教程
- fast无线路由器设置服务器,迅捷(Fast)FW150R无线路由器设置
- 第十一章 ESL-通过事件控制FreeSWITCH
- 在QQ远程协助为什么键盘无法输入?一起来学习!
- 语义分割中样本分布不均衡怎么办
- 游戏面试的维度与思考
- The process has been signaled with signal '5'. 解决办法
- 三国杀 官方 游戏规则