1、Entity(实体类)

@Data
@AllArgsConstructor
@NoArgsConstructor
public class RegionTree {//idprivate String id;//父节点idprivate String parentId;//子节点private List<RegionTree> children;
}

2、TreeUtils

import org.apache.commons.lang3.StringUtils;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TreeUtil {/*** 创建树结构** @param regionTrees 树形结构list* @return treeList*/public static List<RegionTree> tree(List<RegionTree> regionTrees) {//返回的节点树List<RegionTree> rootNodes = new ArrayList<>();Iterator<RegionTree> it = regionTrees.iterator();while (it.hasNext()) {RegionTree next = it.next();//parent(上级Id)为0的是根节点if (StringUtils.isEmpty(next.getParentId())) {rootNodes.add(next);it.remove();}}//遍历,找到二级节点for (RegionTree regionTree : rootNodes) {List<RegionTree> child = getChild(regionTrees, regionTree.getId().toString());regionTree.setChildren(child);}return rootNodes;}/*** 查子节点** @param regions  树结构对象* @param parentId 父id* @return treeList*/private static List<RegionTree> getChild(List<RegionTree> regions, String parentId) {//子节点列表List<RegionTree> childList = new ArrayList<>();Iterator<RegionTree> it = regions.iterator();while (it.hasNext()) {RegionTree regionTree = it.next();if (parentId.equals(regionTree.getParentId())) {childList.add(regionTree);it.remove();}}//遍历 递归获取子节点的子节点for (RegionTree regionTree : childList) {List<RegionTree> child = getChild(regions, regionTree.getId().toString());regionTree.setChildren(child);}//递归出口  childList长度为0if (childList.size() == 0) {return new ArrayList<>();}return childList;}
}

3、Test

public class TestTreeUtils {public static void main(String[] args) {List<RegionTree> list = new ArrayList<>();RegionTree m1 = new RegionTree("1", null, null);RegionTree m2 = new RegionTree("2", "1", null);RegionTree m3 = new RegionTree("3", "2", null);RegionTree m4 = new RegionTree("4", "3", null);RegionTree m5 = new RegionTree("5", "3", null);list.add(m1);list.add(m2);list.add(m3);list.add(m4);list.add(m5);RegionTree m11 = new RegionTree("6", null, null);RegionTree m12 = new RegionTree("7", "6", null);RegionTree m13 = new RegionTree("8", "7", null);RegionTree m14 = new RegionTree("9", "8", null);RegionTree m15 = new RegionTree("10", "8", null);list.add(m15);list.add(m11);list.add(m12);list.add(m13);list.add(m14);List<RegionTree> regionTreeTree = TreeUtil.tree(list);System.out.println(regionTreeTree);}
}

TreeUtil(树形结构转换)相关推荐

  1. 【通俗易懂】vue-elementul实现树形数据表格,后台返回的扁平化数组进行树形结构转换处理

    效果图 需求是做一个这种的多层级表格,树形数据表格. 大家可能遇到的问题 一种是不知道如何做这种多层级的表格 一种是后台给自己返回的数据不是树形的,也就是没有子父级.全是一条条的扁平化数组.类似这样 ...

  2. 基于jsoup的Element实现将树形结构转换成XML格式

    依赖 <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId& ...

  3. 使用注解+反射实现List与树形结构的相互转换

    应用场景: 提示:此种写法只适用于数据量小的转换,数据量大时请移步另一个方案 [一次循环实现List转树形结构(不使用递归)](https://blog.csdn.net/weixin_3730496 ...

  4. java 实现树形结构

    实体父类 @Data public class MenuTreeNode<T> {@ApiModelProperty(value = "节点ID")private St ...

  5. JS 如何快速高效的将数组转换成树形结构

    JS 如何快速高效的将数组转换成树形结构 const data = [{id: 1,pid: 0,name: 'body'}, {id: 2,pid: 1,name: 'title'}, {id: 3 ...

  6. python画父子关系图_将有父子关系的一维数组转换成树形结构(多维)数据

    先来个函数注释 : /** * 将有父子关系的一维数组转换成树形结构(多维)数据 * console.log(JSON.stringify(setTreeData(data), null, 2)); ...

  7. mysql 父子维,将有父子关系的一维数组转换成树形结构(多维)数据

    拉莫斯之舞 先来个函数注释 :/** * 将有父子关系的一维数组转换成树形结构(多维)数据 * console.log(JSON.stringify(setTreeData(data), null,  ...

  8. python list转换成树形结构_python递归查询菜单并转换成json实例

    最近需要用python写一个菜单,折腾了两三天才搞定,现在记录在此,需要的朋友可以借鉴一下. 备注:文章引用非可执行完整代码,仅仅摘录了关键部分的代码 环境 数据库:mysql python:3.6 ...

  9. python list转换成树形结构_列表数据(包含父节点关系)转化为树形结构

    今天开发遇到一个需求,就是把包含父子关系的数据转化为树形结构,这个需求来自我开发的一个功能,前端需要使用 Element 的级联选择器实现行业级联选择的功能. 列表数据类型 每条数据都列出了其父 id ...

  10. 使用js将后台返回的数据转换成树形结构

    将类似如下数据转换成树形的数据: [{ id: 1, name: '1', },{ id: 2, name: '1-1', parentId: 1 },{ id: 3, name: '1-1-1', ...

最新文章

  1. QTP中对数据库的操作(查询,更新和删除等)
  2. 如何轻松搞定CRUD的创建人、修改人、时间等字段的赋值
  3. .net框架读书笔记---引用参数(ref/out)
  4. Ubuntu12安装RobotFramework
  5. asp编程工具_使用ASP.NET Core构建RESTful API的技术指南
  6. Event-based Vision: A Survey——论文阅读笔记
  7. Retroifit原理
  8. linux redis客户端_10个 Linux 顶级开源缓存工具
  9. 三角形面积 java_java编程中求三角形面积肿么写?
  10. 实验5 数独游戏界面设计
  11. Python机器学习:基于西瓜数据集的KNN算法实现
  12. 无捆绑绿色安装金山打字通教程
  13. 浅谈输入阻抗、输出阻抗和阻抗匹配
  14. 主成分分析逆变换_主成分分析方法操作
  15. SNAP 4. 使用snap进行地物光谱分析
  16. 微客侠:解决微信内直接打开淘宝链接
  17. 用计算机观察声音的波形,用计算机观察声音的波形
  18. 宏碁暗影骑士4安装不了Linux,宏碁暗影骑士4评测:在细节中不断改进前行!
  19. 微信支付之 内网穿透
  20. 开发板给电脑自动分配IP?手把手教部署零配置网络实现电脑与开发板直连

热门文章

  1. ubuntu上安装微信教程
  2. IllegalStateException: For MAC signing you do not need to specify the verifier key separately异常解决
  3. DIOR数据集转COCO格式 paddlepaddle
  4. 6. 工业大数据的实施策略
  5. Appcms漏洞+webshell复习
  6. 搜索引擎下拉食云速捷详细_搜索框下拉优化淹云速捷讲信誉,下拉词上词77云26速26捷...
  7. java 读取文件inputstream_使用Inputstream读取文件
  8. 三维模型的泰森多面体离散
  9. css 实现局部模糊 backdrop-filter
  10. c语言 如何选择 大小端,c语言大小端的问题