在业务中往往有一些数据是有层级结构的,比如数据表中原始数据如下形式

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 平铺列表转为树形结构相关推荐

  1. 每天一道LeetCode-----将二叉树原地平铺成链式结构

    Flatten Binary Tree to Linked List 原题链接Flatten Binary Tree to Linked List 给定一个二叉树,将其原地平铺成链式结构(按先序遍历的 ...

  2. JavaScript将数组转为树形结构

    JavaScript将数组转为树形结构 1.需求 后台给了一个这样的数据让咱前端去转换为树形结构(没有重复数据).不多说,先来看看给了一个怎样的数组数据,转换为怎样的树形结构. 服务器传过来的数组 c ...

  3. java 树结构_Java通用tree树形结构

    前言 现在大部分都是后端封装树形结构,第一次做的时候想从网上找通用,发现大部分都是要用类的get/set方法,不一样就要改,毕竟懒,改就改改,后来发现部门要,地区要,分类要,于是想着就把之前的用注解和 ...

  4. 博客系统评论模块列表转树形结构

    文章目录 简单介绍 一.打印效果 二.数据库表结构 三 实体 四.代码实现 2.1 获取树形结构 2.2 添加子节点[回复评论] 简单介绍 一.打印效果 {"msg": " ...

  5. java实现处理无限层级树形结构

    树形结构在实际业务中是很经常遇到的,比如说机构.菜单.部门等等业务就会经常遇到层级关系.一般层级处理,有两种方式 (1)将所有的数据返回给前端,由前端处理,组装成树形结构,别担心,前端有组件的,只要后 ...

  6. java—stream流递归实现树形结构

    一.在项目开发中,经常会遇到像菜单式的页面,如下图 数据表结构一般像一个树形结构一样 对应的Model体 @Data //代替get.set方法 @ApiModel("知识园地视图" ...

  7. java 通用扁平数据转换成树形结构

    大家好,我是入错行的bug猫.(http://blog.csdn.net/qq_41399429,谢绝转载) 所谓树形结构,就是上级节点中,包含若干子节点,然后子节点中又包含其子节点,一般是没有层级次 ...

  8. java swing 树_JavaSwing实现树形结构 | 学步园

    一.Applet package com.jy.applet.day1206; import java.awt.Container; import javax.swing.JApplet; impor ...

  9. JavaScript将扁平化数据转为树形结构

    首先给你一个数组list如下: var arr = [{ name: '权限管理', id: 1, parentId: 0 },{ name: '角色管理', id: 1000, parentId: ...

最新文章

  1. j2ee性能调优之最小化资源压力测试法则
  2. 面向对象(下)知识点
  3. HDU1520 Anniversary party 树形动态规划
  4. python多线程处理数据库_在flask框架下利用Python的threading或thread多线程库如何操作数据库?...
  5. 通过制作数字桌面游戏和Web应用程序学习JavaScript
  6. 【蓝桥杯官网试题 -算法训练】素因子去重(数学,数论,因子约数)
  7. Django中使用缓存
  8. oracle 建分区索引_ORACLE 创建组合分区索引
  9. 云上持续交付实践系列1 --- java 篇
  10. git之配置在Terminal显示git分支
  11. 高性能服务器架构 的几个注意点 (High-Performance Server Architecture)
  12. alsa buffer原理_alsa音频开发全攻略
  13. Win11怎么卸载软件?Win11彻底卸载软件教程
  14. fast无线路由器设置服务器,迅捷(Fast)FW150R无线路由器设置
  15. 第十一章 ESL-通过事件控制FreeSWITCH
  16. 在QQ远程协助为什么键盘无法输入?一起来学习!
  17. 语义分割中样本分布不均衡怎么办
  18. 游戏面试的维度与思考
  19. The process has been signaled with signal '5'. 解决办法
  20. 三国杀 官方 游戏规则

热门文章

  1. 【-CAD-】什么是CAD数据?(笔记)
  2. 拼多多新任CEO不“追风”
  3. 东野圭吾:把杀人凶手绑在这种虚无的十字架上,到底有什么意义?
  4. Box-Cox变换详解
  5. java画个动漫人物_动漫人物绘画教程
  6. android系统平台显示驱动开发简要:Samsung LCD接口篇『三』
  7. 竞价排名要和其他宣传模式相结合
  8. 纯CSS实现的文字效果还可以这么酷炫
  9. java 初级、中级、高级工程师有什么区别?
  10. 网络安全-日志监控-关联分析-大数据