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

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. 测试代码发布到博客效果(Windows Live Writer发布)
  2. JAVA调用SQL存储过程详解
  3. 小公司要不要做KPI
  4. c语言数字储存于变量,用C语言写中文数字字符串转数值变量
  5. 怎么判断软件公司是否靠谱
  6. 用于安全连接 Microsoft 365 的 Mimecast 数字证书被盗
  7. mysql怎么切换用户_DB2迁移到Mysql
  8. Androd UI学习之ImageSwitcher
  9. linux mysql 密码策略_Linux Ubuntu 14 MySQL 密码策略(复杂度)和审计插件
  10. 11月程序员全国程序员平均工资
  11. 沁园春·长沙 中法对照
  12. Vista激活时出现“0X80072EFE”故障及解决
  13. c语言recy未定义标识符,求解这个C语言子程序什么意思
  14. 零基础语法入门第四讲 代词的主格和宾格
  15. 备考CSP刷题经验总结
  16. Kotlin:Spring之@Value(“${xxx.xx}“)报错问题
  17. 介绍一款Oracle的利器小工具-SQLcl
  18. matlab给hfss建模,一种matlab与hfss接口控制方法
  19. 月入千万的卖家,都是这样制造爆款的
  20. 《第五元素》女高音的歌曲

热门文章

  1. Vercel+Freenom 搭建博客
  2. 32岁,薪水被应届生倒挂,裸辞了
  3. codeforce 590d
  4. spring认证考试练习题
  5. scratch教程 03
  6. 被低估的敏捷管理工具
  7. 仿哔哩哔哩应用客户端Android版源码项目
  8. 【HMS Core】REST获取运动健康APP数据的问题
  9. Kubernetes暴力删除(rm -rf)与无影响恢复
  10. 私域流量运营之增长运营:用户运营实战与行为数据洞察,私域流量运营者必修课!...