当前位置: 首页 > wzjs >正文

西安网站制作费用微网站内容页模板

西安网站制作费用,微网站内容页模板,成都网络优化网站,免费公众号开发平台目录前言一、树状结构数据库存储二、工具类三、测试四、自定义树节点返回类型(只保留部分字段)1. 新增 TreeNodeDTO 类2.修改TreeUtil 类3.测试4.输出前言 有时候,开发过程中我们会遇到一些树状层级结构。 比如,公司部门组织架构…

目录

  • 前言
  • 一、树状结构数据库存储
  • 二、工具类
  • 三、测试
  • 四、自定义树节点返回类型(只保留部分字段)
    • 1. 新增 TreeNodeDTO 类
    • 2.修改TreeUtil 类
    • 3.测试
    • 4.输出

前言

有时候,开发过程中我们会遇到一些树状层级结构。

比如,公司部门组织架构,或者 国家 - - 省 - - 市 - - 镇 - - 村 这样的层级结构:

|-- A|-- q 省|-- r 城|-- w 镇|-- z 村|-- p 村|-- l 镇|-- s 村|-- t 城|-- e 镇|-- f 村|-- w 省|-- k 城|-- j 镇|-- h 村
|-- B|-- v 省|-- x 城|-- n 镇|-- u 村|-- y 村|-- g 镇|-- s 村|-- t 城|-- e 镇|-- f 村|-- c 省|-- m 城|-- j 镇|-- h 村

这样的树状层级结构,每一层都有许多节点,每个节点下都有许多子节点。
那这样的结构怎么存储,以及怎么处理呢?

下面我们以 国家 - -》 公司 - -》地区 - -》部门 - -》人员 的层级结构进行示例。

中国
├── 华为
│   ├── 华东地区
│   │   ├── 人力部
│   │   │   ├── 张1
│   │   │   └── 李2
│   │   ├── 开发部
│   │   │   ├── 王3
│   │   │   └── 赵4
│   │   └── 后勤部
│   │       ├── 孙5
│   │       └── 周6
│   └── 华南地区
│       ├── 人力部
│       │   ├── 钱7
│       │   └── 吴8
│       ├── 开发部
│       │   ├── 张9
│       │   └── 李10
│       └── 后勤部
│           ├── 王11
│           └── 赵12
└── 小米├── 华东地区│   ├── 人力部│   │   ├── 孙13│   │   └── 周14│   ├── 开发部│   │   ├── 钱15│   │   └── 吴16│   └── 后勤部│       ├── 张17│       └── 李18└── 华南地区├── 人力部│   ├── 王19│   └── 赵20├── 开发部│   ├── 孙21│   └── 周22└── 后勤部├── 钱23└── 吴24
美国
├── 谷歌
│   ├── 华盛顿地区
│   │   ├── HR
│   │   │   ├── Alice1
│   │   │   └── Bob2
│   │   ├── Development
│   │   │   ├── Charlie3
│   │   │   └── David4
│   │   └── Logistics
│   │       ├── Eve5
│   │       └── Frank6
│   └── 纽约地区
│       ├── HR
│       │   ├── Grace7
│       │   └── Helen8
│       ├── Development
│       │   ├── Alice9
│       │   └── Bob10
│       └── Logistics
│           ├── Charlie11
│           └── David12
└── 微软├── 华盛顿地区│   ├── HR│   │   ├── Eve13│   │   └── Frank14│   ├── Development│   │   ├── Grace15│   │   └── Helen16│   └── Logistics│       ├── Alice17│       └── Bob18└── 纽约地区├── HR│   ├── Charlie19│   └── David20├── Development│   ├── Eve21│   └── Frank22└── Logistics├── Grace23└── Helen24

一、树状结构数据库存储

在数据库中可以用 id、name、parentId、orderNum 字段来存储数据。
id 是主键;
parentId 是父节点 id ,顶层节点 中国和美国设置为 0 ;
orderNum 用来对同一节点下同级节点进行顺序先后确定。

最终数据库表如下:

idnameparentIdorderNum
1中国01
2美国02
3华为11
4小米12
5谷歌21
6微软22
7华东地区31
8华南地区32
9华东地区41
10华南地区42
11华盛顿地区51
12纽约地区52
13华盛顿地区61
14纽约地区62
15人力部71
16开发部72
17后勤部73
18人力部81
19开发部82
20后勤部83
21人力部91
22开发部92
23后勤部93
24人力部101
25开发部102
26后勤部103
27HR111
28Development112
29Logistics113
30HR121
31Development122
32Logistics123
33HR131
34Development132
35Logistics133
36HR141
37Development142
38Logistics143
39张1151
40李2152
41王3161
42赵4162
43孙5171
44周6172
45钱7181
46吴8182
47张9191
48李10192
49王11201
50赵12202
51孙13211
52周14212
53钱15221
54吴16222
55张17231
56李18232
57王19241
58赵20242
59孙21251
60周22252
61钱23261
62吴24262
63Alice1271
64Bob2272
65Charlie3281
66David4282
67Eve5291
68Frank6292
69Grace7301
70Helen8302
71Alice9311
72Bob10312
73Charlie11321
74David12322
75Eve13331
76Frank14332
77Grace15341
78Helen16342
79Alice17351
80Bob18352
81Charlie19361
82David20362
83Eve21371
84Frank22372
85Grace23381
86Helen24382

二、工具类

CompanyInfo 类


import java.util.ArrayList;
import java.util.List;public class CompanyInfo {private Long id;private String name;private Long parentId;private Integer orderNum;//子节点列表private List<CompanyInfo> children = new ArrayList<>();public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Long getParentId() {return parentId;}public void setParentId(Long parentId) {this.parentId = parentId;}public Integer getOrderNum() {return orderNum;}public void setOrderNum(Integer orderNum) {this.orderNum = orderNum;}public List<CompanyInfo> getChildren() {return children;}public void setChildren(List<CompanyInfo> children) {this.children = children;}public CompanyInfo(Long id, String name, Long parentId, Integer orderNum) {this.id = id;this.name = name;this.parentId = parentId;this.orderNum = orderNum;}
}

TreeUtil 类处理树状结构:


import java.util.*;
import java.util.stream.Collectors;public class TreeUtil {/*** 构建树结构** @param nodes 数据列表* @return 树形结构列表*/public static List<CompanyInfo> buildTree(List<CompanyInfo> nodes) {// 先构建一个 id -> 节点的映射,方便查找父节点Map<Long, CompanyInfo> idNodeMap = nodes.stream().collect(Collectors.toMap(CompanyInfo::getId, node -> node));// 最终返回的树根节点集合List<CompanyInfo> treeRoots = new ArrayList<>();for (CompanyInfo node : nodes) {if (node.getParentId() == 0) {// 顶层节点treeRoots.add(node);} else {// 找到父节点,添加到其 children 中CompanyInfo parent = idNodeMap.get(node.getParentId());if (parent != null) {parent.getChildren().add(node);}}}// 对每层 children 根据 orderNum 排序sortTree(treeRoots);return treeRoots;}private static void sortTree(List<CompanyInfo> nodes) {if (nodes == null || nodes.isEmpty()) return;nodes.sort(Comparator.comparing(CompanyInfo::getOrderNum));for (CompanyInfo node : nodes) {sortTree(node.getChildren());}}
}

三、测试

   public static void main(String[] args) {List<CompanyInfo> flatList = new ArrayList<>();// 国家flatList.add(new CompanyInfo(1L, "中国", 0L, 1));flatList.add(new CompanyInfo(2L, "美国", 0L, 2));// 公司flatList.add(new CompanyInfo(3L, "华为", 1L, 1));flatList.add(new CompanyInfo(4L, "小米", 1L, 2));flatList.add(new CompanyInfo(5L, "谷歌", 2L, 1));flatList.add(new CompanyInfo(6L, "微软", 2L, 2));// 地区flatList.add(new CompanyInfo(7L, "华东地区", 3L, 1));flatList.add(new CompanyInfo(8L, "华南地区", 3L, 2));flatList.add(new CompanyInfo(9L, "华东地区", 4L, 1));flatList.add(new CompanyInfo(10L, "华南地区", 4L, 2));flatList.add(new CompanyInfo(11L, "华盛顿地区", 5L, 1));flatList.add(new CompanyInfo(12L, "纽约地区", 5L, 2));flatList.add(new CompanyInfo(13L, "华盛顿地区", 6L, 1));flatList.add(new CompanyInfo(14L, "纽约地区", 6L, 2));// 部门flatList.add(new CompanyInfo(15L, "人力部", 7L, 1));flatList.add(new CompanyInfo(16L, "开发部", 7L, 2));flatList.add(new CompanyInfo(17L, "后勤部", 7L, 3));flatList.add(new CompanyInfo(18L, "人力部", 8L, 1));flatList.add(new CompanyInfo(19L, "开发部", 8L, 2));flatList.add(new CompanyInfo(20L, "后勤部", 8L, 3));flatList.add(new CompanyInfo(21L, "人力部", 9L, 1));flatList.add(new CompanyInfo(22L, "开发部", 9L, 2));flatList.add(new CompanyInfo(23L, "后勤部", 9L, 3));flatList.add(new CompanyInfo(24L, "人力部", 10L, 1));flatList.add(new CompanyInfo(25L, "开发部", 10L, 2));flatList.add(new CompanyInfo(26L, "后勤部", 10L, 3));flatList.add(new CompanyInfo(27L, "HR", 11L, 1));flatList.add(new CompanyInfo(28L, "Development", 11L, 2));flatList.add(new CompanyInfo(29L, "Logistics", 11L, 3));flatList.add(new CompanyInfo(30L, "HR", 12L, 1));flatList.add(new CompanyInfo(31L, "Development", 12L, 2));flatList.add(new CompanyInfo(32L, "Logistics", 12L, 3));flatList.add(new CompanyInfo(33L, "HR", 13L, 1));flatList.add(new CompanyInfo(34L, "Development", 13L, 2));flatList.add(new CompanyInfo(35L, "Logistics", 13L, 3));flatList.add(new CompanyInfo(36L, "HR", 14L, 1));flatList.add(new CompanyInfo(37L, "Development", 14L, 2));flatList.add(new CompanyInfo(38L, "Logistics", 14L, 3));// 人员flatList.add(new CompanyInfo(39L, "张1", 15L, 1));flatList.add(new CompanyInfo(40L, "李2", 15L, 2));flatList.add(new CompanyInfo(41L, "王3", 16L, 1));flatList.add(new CompanyInfo(42L, "赵4", 16L, 2));flatList.add(new CompanyInfo(43L, "孙5", 17L, 1));flatList.add(new CompanyInfo(44L, "周6", 17L, 2));flatList.add(new CompanyInfo(45L, "钱7", 18L, 1));flatList.add(new CompanyInfo(46L, "吴8", 18L, 2));flatList.add(new CompanyInfo(47L, "张9", 19L, 1));flatList.add(new CompanyInfo(48L, "李10", 19L, 2));flatList.add(new CompanyInfo(49L, "王11", 20L, 1));flatList.add(new CompanyInfo(50L, "赵12", 20L, 2));flatList.add(new CompanyInfo(51L, "孙13", 21L, 1));flatList.add(new CompanyInfo(52L, "周14", 21L, 2));flatList.add(new CompanyInfo(53L, "钱15", 22L, 1));flatList.add(new CompanyInfo(54L, "吴16", 22L, 2));flatList.add(new CompanyInfo(55L, "张17", 23L, 1));flatList.add(new CompanyInfo(56L, "李18", 23L, 2));flatList.add(new CompanyInfo(57L, "王19", 24L, 1));flatList.add(new CompanyInfo(58L, "赵20", 24L, 2));flatList.add(new CompanyInfo(59L, "孙21", 25L, 1));flatList.add(new CompanyInfo(60L, "周22", 25L, 2));flatList.add(new CompanyInfo(61L, "钱23", 26L, 1));flatList.add(new CompanyInfo(62L, "吴24", 26L, 2));flatList.add(new CompanyInfo(63L, "Alice1", 27L, 1));flatList.add(new CompanyInfo(64L, "Bob2", 27L, 2));flatList.add(new CompanyInfo(65L, "Charlie3", 28L, 1));flatList.add(new CompanyInfo(66L, "David4", 28L, 2));flatList.add(new CompanyInfo(67L, "Eve5", 29L, 1));flatList.add(new CompanyInfo(68L, "Frank6", 29L, 2));flatList.add(new CompanyInfo(69L, "Grace7", 30L, 1));flatList.add(new CompanyInfo(70L, "Helen8", 30L, 2));flatList.add(new CompanyInfo(71L, "Alice9", 31L, 1));flatList.add(new CompanyInfo(72L, "Bob10", 31L, 2));flatList.add(new CompanyInfo(73L, "Charlie11", 32L, 1));flatList.add(new CompanyInfo(74L, "David12", 32L, 2));flatList.add(new CompanyInfo(75L, "Eve13", 33L, 1));flatList.add(new CompanyInfo(76L, "Frank14", 33L, 2));flatList.add(new CompanyInfo(77L, "Grace15", 34L, 1));flatList.add(new CompanyInfo(78L, "Helen16", 34L, 2));flatList.add(new CompanyInfo(79L, "Alice17", 35L, 1));flatList.add(new CompanyInfo(80L, "Bob18", 35L, 2));flatList.add(new CompanyInfo(81L, "Charlie19", 36L, 1));flatList.add(new CompanyInfo(82L, "David20", 36L, 2));flatList.add(new CompanyInfo(83L, "Eve21", 37L, 1));flatList.add(new CompanyInfo(84L, "Frank22", 37L, 2));flatList.add(new CompanyInfo(85L, "Grace23", 38L, 1));flatList.add(new CompanyInfo(86L, "Helen24", 38L, 2));List<CompanyInfo> tree = TreeUtil.buildTree(flatList);System.out.println(JSONObject.toJSONString(tree));}

输出:

[{"children": [{"children": [{"children": [{"children": [{"children": [],"id": 39,"name": "张1","orderNum": 1,"parentId": 15},{"children": [],"id": 40,"name": "李2","orderNum": 2,"parentId": 15}],"id": 15,"name": "人力部","orderNum": 1,"parentId": 7},{"children": [{"children": [],"id": 41,"name": "王3","orderNum": 1,"parentId": 16},{"children": [],"id": 42,"name": "赵4","orderNum": 2,"parentId": 16}],"id": 16,"name": "开发部","orderNum": 2,"parentId": 7},{"children": [{"children": [],"id": 43,"name": "孙5","orderNum": 1,"parentId": 17},{"children": [],"id": 44,"name": "周6","orderNum": 2,"parentId": 17}],"id": 17,"name": "后勤部","orderNum": 3,"parentId": 7}],"id": 7,"name": "华东地区","orderNum": 1,"parentId": 3},{"children": [{"children": [{"children": [],"id": 45,"name": "钱7","orderNum": 1,"parentId": 18},{"children": [],"id": 46,"name": "吴8","orderNum": 2,"parentId": 18}],"id": 18,"name": "人力部","orderNum": 1,"parentId": 8},{"children": [{"children": [],"id": 47,"name": "张9","orderNum": 1,"parentId": 19},{"children": [],"id": 48,"name": "李10","orderNum": 2,"parentId": 19}],"id": 19,"name": "开发部","orderNum": 2,"parentId": 8},{"children": [{"children": [],"id": 49,"name": "王11","orderNum": 1,"parentId": 20},{"children": [],"id": 50,"name": "赵12","orderNum": 2,"parentId": 20}],"id": 20,"name": "后勤部","orderNum": 3,"parentId": 8}],"id": 8,"name": "华南地区","orderNum": 2,"parentId": 3}],"id": 3,"name": "华为","orderNum": 1,"parentId": 1},{"children": [{"children": [{"children": [{"children": [],"id": 51,"name": "孙13","orderNum": 1,"parentId": 21},{"children": [],"id": 52,"name": "周14","orderNum": 2,"parentId": 21}],"id": 21,"name": "人力部","orderNum": 1,"parentId": 9},{"children": [{"children": [],"id": 53,"name": "钱15","orderNum": 1,"parentId": 22},{"children": [],"id": 54,"name": "吴16","orderNum": 2,"parentId": 22}],"id": 22,"name": "开发部","orderNum": 2,"parentId": 9},{"children": [{"children": [],"id": 55,"name": "张17","orderNum": 1,"parentId": 23},{"children": [],"id": 56,"name": "李18","orderNum": 2,"parentId": 23}],"id": 23,"name": "后勤部","orderNum": 3,"parentId": 9}],"id": 9,"name": "华东地区","orderNum": 1,"parentId": 4},{"children": [{"children": [{"children": [],"id": 57,"name": "王19","orderNum": 1,"parentId": 24},{"children": [],"id": 58,"name": "赵20","orderNum": 2,"parentId": 24}],"id": 24,"name": "人力部","orderNum": 1,"parentId": 10},{"children": [{"children": [],"id": 59,"name": "孙21","orderNum": 1,"parentId": 25},{"children": [],"id": 60,"name": "周22","orderNum": 2,"parentId": 25}],"id": 25,"name": "开发部","orderNum": 2,"parentId": 10},{"children": [{"children": [],"id": 61,"name": "钱23","orderNum": 1,"parentId": 26},{"children": [],"id": 62,"name": "吴24","orderNum": 2,"parentId": 26}],"id": 26,"name": "后勤部","orderNum": 3,"parentId": 10}],"id": 10,"name": "华南地区","orderNum": 2,"parentId": 4}],"id": 4,"name": "小米","orderNum": 2,"parentId": 1}],"id": 1,"name": "中国","orderNum": 1,"parentId": 0},{"children": [{"children": [{"children": [{"children": [{"children": [],"id": 63,"name": "Alice1","orderNum": 1,"parentId": 27},{"children": [],"id": 64,"name": "Bob2","orderNum": 2,"parentId": 27}],"id": 27,"name": "HR","orderNum": 1,"parentId": 11},{"children": [{"children": [],"id": 65,"name": "Charlie3","orderNum": 1,"parentId": 28},{"children": [],"id": 66,"name": "David4","orderNum": 2,"parentId": 28}],"id": 28,"name": "Development","orderNum": 2,"parentId": 11},{"children": [{"children": [],"id": 67,"name": "Eve5","orderNum": 1,"parentId": 29},{"children": [],"id": 68,"name": "Frank6","orderNum": 2,"parentId": 29}],"id": 29,"name": "Logistics","orderNum": 3,"parentId": 11}],"id": 11,"name": "华盛顿地区","orderNum": 1,"parentId": 5},{"children": [{"children": [{"children": [],"id": 69,"name": "Grace7","orderNum": 1,"parentId": 30},{"children": [],"id": 70,"name": "Helen8","orderNum": 2,"parentId": 30}],"id": 30,"name": "HR","orderNum": 1,"parentId": 12},{"children": [{"children": [],"id": 71,"name": "Alice9","orderNum": 1,"parentId": 31},{"children": [],"id": 72,"name": "Bob10","orderNum": 2,"parentId": 31}],"id": 31,"name": "Development","orderNum": 2,"parentId": 12},{"children": [{"children": [],"id": 73,"name": "Charlie11","orderNum": 1,"parentId": 32},{"children": [],"id": 74,"name": "David12","orderNum": 2,"parentId": 32}],"id": 32,"name": "Logistics","orderNum": 3,"parentId": 12}],"id": 12,"name": "纽约地区","orderNum": 2,"parentId": 5}],"id": 5,"name": "谷歌","orderNum": 1,"parentId": 2},{"children": [{"children": [{"children": [{"children": [],"id": 75,"name": "Eve13","orderNum": 1,"parentId": 33},{"children": [],"id": 76,"name": "Frank14","orderNum": 2,"parentId": 33}],"id": 33,"name": "HR","orderNum": 1,"parentId": 13},{"children": [{"children": [],"id": 77,"name": "Grace15","orderNum": 1,"parentId": 34},{"children": [],"id": 78,"name": "Helen16","orderNum": 2,"parentId": 34}],"id": 34,"name": "Development","orderNum": 2,"parentId": 13},{"children": [{"children": [],"id": 79,"name": "Alice17","orderNum": 1,"parentId": 35},{"children": [],"id": 80,"name": "Bob18","orderNum": 2,"parentId": 35}],"id": 35,"name": "Logistics","orderNum": 3,"parentId": 13}],"id": 13,"name": "华盛顿地区","orderNum": 1,"parentId": 6},{"children": [{"children": [{"children": [],"id": 81,"name": "Charlie19","orderNum": 1,"parentId": 36},{"children": [],"id": 82,"name": "David20","orderNum": 2,"parentId": 36}],"id": 36,"name": "HR","orderNum": 1,"parentId": 14},{"children": [{"children": [],"id": 83,"name": "Eve21","orderNum": 1,"parentId": 37},{"children": [],"id": 84,"name": "Frank22","orderNum": 2,"parentId": 37}],"id": 37,"name": "Development","orderNum": 2,"parentId": 14},{"children": [{"children": [],"id": 85,"name": "Grace23","orderNum": 1,"parentId": 38},{"children": [],"id": 86,"name": "Helen24","orderNum": 2,"parentId": 38}],"id": 38,"name": "Logistics","orderNum": 3,"parentId": 14}],"id": 14,"name": "纽约地区","orderNum": 2,"parentId": 6}],"id": 6,"name": "微软","orderNum": 2,"parentId": 2}],"id": 2,"name": "美国","orderNum": 2,"parentId": 0}
]

四、自定义树节点返回类型(只保留部分字段)

上面我们返回了所有字段信息,如果最终只需要 id 、name 字段呢?

1. 新增 TreeNodeDTO 类


import java.util.ArrayList;
import java.util.List;public class TreeNodeDTO {private Long id;private String name;// 子节点private List<TreeNodeDTO> children = new ArrayList<>();public TreeNodeDTO() {}public TreeNodeDTO(Long id, String name) {this.id = id;this.name = name;}// Getter 和 Setterpublic Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List<TreeNodeDTO> getChildren() {return children;}public void setChildren(List<TreeNodeDTO> children) {this.children = children;}
}

2.修改TreeUtil 类

TreeUtil 类中增加 convertToDtoTree 和 convertNode 方法。

TreeUtil 类修改后如下:

package com.hai.tang.util;import com.hai.tang.model.CompanyInfo;
import com.hai.tang.model.TreeNodeDTO;import java.util.*;
import java.util.stream.Collectors;public class TreeUtil {/*** 构建树结构** @param nodes 数据列表* @return 树形结构列表*/public static List<CompanyInfo> buildTree(List<CompanyInfo> nodes) {// 先构建一个 id -> 节点的映射,方便查找父节点Map<Long, CompanyInfo> idNodeMap = nodes.stream().collect(Collectors.toMap(CompanyInfo::getId, node -> node));// 最终返回的树根节点集合List<CompanyInfo> treeRoots = new ArrayList<>();for (CompanyInfo node : nodes) {if (node.getParentId() == 0) {// 顶层节点treeRoots.add(node);} else {// 找到父节点,添加到其 children 中CompanyInfo parent = idNodeMap.get(node.getParentId());if (parent != null) {parent.getChildren().add(node);}}}// 对每层 children 根据 orderNum 排序sortTree(treeRoots);return treeRoots;}private static void sortTree(List<CompanyInfo> nodes) {if (nodes == null || nodes.isEmpty()) return;nodes.sort(Comparator.comparing(CompanyInfo::getOrderNum));for (CompanyInfo node : nodes) {sortTree(node.getChildren());}}/*** 将树结构转换为TreeNodeDTO,即只返回id,和name字段** @param 树形结构列表*/public static List<TreeNodeDTO> convertToDtoTree(List<CompanyInfo> treeNodes) {if (treeNodes == null) return new ArrayList<>();return treeNodes.stream().map(TreeUtil::convertNode).collect(Collectors.toList());}private static TreeNodeDTO convertNode(CompanyInfo node) {TreeNodeDTO dto = new TreeNodeDTO(node.getId(), node.getName());if (node.getChildren() != null && !node.getChildren().isEmpty()) {dto.setChildren(node.getChildren().stream().map(TreeUtil::convertNode).collect(Collectors.toList()));}return dto;}
}

3.测试

   public static void main(String[] args) {List<CompanyInfo> flatList = new ArrayList<>();// 国家flatList.add(new CompanyInfo(1L, "中国", 0L, 1));flatList.add(new CompanyInfo(2L, "美国", 0L, 2));// 公司flatList.add(new CompanyInfo(3L, "华为", 1L, 1));flatList.add(new CompanyInfo(4L, "小米", 1L, 2));flatList.add(new CompanyInfo(5L, "谷歌", 2L, 1));flatList.add(new CompanyInfo(6L, "微软", 2L, 2));// 地区flatList.add(new CompanyInfo(7L, "华东地区", 3L, 1));flatList.add(new CompanyInfo(8L, "华南地区", 3L, 2));flatList.add(new CompanyInfo(9L, "华东地区", 4L, 1));flatList.add(new CompanyInfo(10L, "华南地区", 4L, 2));flatList.add(new CompanyInfo(11L, "华盛顿地区", 5L, 1));flatList.add(new CompanyInfo(12L, "纽约地区", 5L, 2));flatList.add(new CompanyInfo(13L, "华盛顿地区", 6L, 1));flatList.add(new CompanyInfo(14L, "纽约地区", 6L, 2));// 部门flatList.add(new CompanyInfo(15L, "人力部", 7L, 1));flatList.add(new CompanyInfo(16L, "开发部", 7L, 2));flatList.add(new CompanyInfo(17L, "后勤部", 7L, 3));flatList.add(new CompanyInfo(18L, "人力部", 8L, 1));flatList.add(new CompanyInfo(19L, "开发部", 8L, 2));flatList.add(new CompanyInfo(20L, "后勤部", 8L, 3));flatList.add(new CompanyInfo(21L, "人力部", 9L, 1));flatList.add(new CompanyInfo(22L, "开发部", 9L, 2));flatList.add(new CompanyInfo(23L, "后勤部", 9L, 3));flatList.add(new CompanyInfo(24L, "人力部", 10L, 1));flatList.add(new CompanyInfo(25L, "开发部", 10L, 2));flatList.add(new CompanyInfo(26L, "后勤部", 10L, 3));flatList.add(new CompanyInfo(27L, "HR", 11L, 1));flatList.add(new CompanyInfo(28L, "Development", 11L, 2));flatList.add(new CompanyInfo(29L, "Logistics", 11L, 3));flatList.add(new CompanyInfo(30L, "HR", 12L, 1));flatList.add(new CompanyInfo(31L, "Development", 12L, 2));flatList.add(new CompanyInfo(32L, "Logistics", 12L, 3));flatList.add(new CompanyInfo(33L, "HR", 13L, 1));flatList.add(new CompanyInfo(34L, "Development", 13L, 2));flatList.add(new CompanyInfo(35L, "Logistics", 13L, 3));flatList.add(new CompanyInfo(36L, "HR", 14L, 1));flatList.add(new CompanyInfo(37L, "Development", 14L, 2));flatList.add(new CompanyInfo(38L, "Logistics", 14L, 3));// 人员flatList.add(new CompanyInfo(39L, "张1", 15L, 1));flatList.add(new CompanyInfo(40L, "李2", 15L, 2));flatList.add(new CompanyInfo(41L, "王3", 16L, 1));flatList.add(new CompanyInfo(42L, "赵4", 16L, 2));flatList.add(new CompanyInfo(43L, "孙5", 17L, 1));flatList.add(new CompanyInfo(44L, "周6", 17L, 2));flatList.add(new CompanyInfo(45L, "钱7", 18L, 1));flatList.add(new CompanyInfo(46L, "吴8", 18L, 2));flatList.add(new CompanyInfo(47L, "张9", 19L, 1));flatList.add(new CompanyInfo(48L, "李10", 19L, 2));flatList.add(new CompanyInfo(49L, "王11", 20L, 1));flatList.add(new CompanyInfo(50L, "赵12", 20L, 2));flatList.add(new CompanyInfo(51L, "孙13", 21L, 1));flatList.add(new CompanyInfo(52L, "周14", 21L, 2));flatList.add(new CompanyInfo(53L, "钱15", 22L, 1));flatList.add(new CompanyInfo(54L, "吴16", 22L, 2));flatList.add(new CompanyInfo(55L, "张17", 23L, 1));flatList.add(new CompanyInfo(56L, "李18", 23L, 2));flatList.add(new CompanyInfo(57L, "王19", 24L, 1));flatList.add(new CompanyInfo(58L, "赵20", 24L, 2));flatList.add(new CompanyInfo(59L, "孙21", 25L, 1));flatList.add(new CompanyInfo(60L, "周22", 25L, 2));flatList.add(new CompanyInfo(61L, "钱23", 26L, 1));flatList.add(new CompanyInfo(62L, "吴24", 26L, 2));flatList.add(new CompanyInfo(63L, "Alice1", 27L, 1));flatList.add(new CompanyInfo(64L, "Bob2", 27L, 2));flatList.add(new CompanyInfo(65L, "Charlie3", 28L, 1));flatList.add(new CompanyInfo(66L, "David4", 28L, 2));flatList.add(new CompanyInfo(67L, "Eve5", 29L, 1));flatList.add(new CompanyInfo(68L, "Frank6", 29L, 2));flatList.add(new CompanyInfo(69L, "Grace7", 30L, 1));flatList.add(new CompanyInfo(70L, "Helen8", 30L, 2));flatList.add(new CompanyInfo(71L, "Alice9", 31L, 1));flatList.add(new CompanyInfo(72L, "Bob10", 31L, 2));flatList.add(new CompanyInfo(73L, "Charlie11", 32L, 1));flatList.add(new CompanyInfo(74L, "David12", 32L, 2));flatList.add(new CompanyInfo(75L, "Eve13", 33L, 1));flatList.add(new CompanyInfo(76L, "Frank14", 33L, 2));flatList.add(new CompanyInfo(77L, "Grace15", 34L, 1));flatList.add(new CompanyInfo(78L, "Helen16", 34L, 2));flatList.add(new CompanyInfo(79L, "Alice17", 35L, 1));flatList.add(new CompanyInfo(80L, "Bob18", 35L, 2));flatList.add(new CompanyInfo(81L, "Charlie19", 36L, 1));flatList.add(new CompanyInfo(82L, "David20", 36L, 2));flatList.add(new CompanyInfo(83L, "Eve21", 37L, 1));flatList.add(new CompanyInfo(84L, "Frank22", 37L, 2));flatList.add(new CompanyInfo(85L, "Grace23", 38L, 1));flatList.add(new CompanyInfo(86L, "Helen24", 38L, 2));List<CompanyInfo> tree = TreeUtil.buildTree(flatList);List<TreeNodeDTO> dtoTree = TreeUtil.convertToDtoTree(tree);System.out.println(JSONObject.toJSONString(dtoTree));}

4.输出

[{"children": [{"children": [{"children": [{"children": [{"children": [],"id": 39,"name": "张1"},{"children": [],"id": 40,"name": "李2"}],"id": 15,"name": "人力部"},{"children": [{"children": [],"id": 41,"name": "王3"},{"children": [],"id": 42,"name": "赵4"}],"id": 16,"name": "开发部"},{"children": [{"children": [],"id": 43,"name": "孙5"},{"children": [],"id": 44,"name": "周6"}],"id": 17,"name": "后勤部"}],"id": 7,"name": "华东地区"},{"children": [{"children": [{"children": [],"id": 45,"name": "钱7"},{"children": [],"id": 46,"name": "吴8"}],"id": 18,"name": "人力部"},{"children": [{"children": [],"id": 47,"name": "张9"},{"children": [],"id": 48,"name": "李10"}],"id": 19,"name": "开发部"},{"children": [{"children": [],"id": 49,"name": "王11"},{"children": [],"id": 50,"name": "赵12"}],"id": 20,"name": "后勤部"}],"id": 8,"name": "华南地区"}],"id": 3,"name": "华为"},{"children": [{"children": [{"children": [{"children": [],"id": 51,"name": "孙13"},{"children": [],"id": 52,"name": "周14"}],"id": 21,"name": "人力部"},{"children": [{"children": [],"id": 53,"name": "钱15"},{"children": [],"id": 54,"name": "吴16"}],"id": 22,"name": "开发部"},{"children": [{"children": [],"id": 55,"name": "张17"},{"children": [],"id": 56,"name": "李18"}],"id": 23,"name": "后勤部"}],"id": 9,"name": "华东地区"},{"children": [{"children": [{"children": [],"id": 57,"name": "王19"},{"children": [],"id": 58,"name": "赵20"}],"id": 24,"name": "人力部"},{"children": [{"children": [],"id": 59,"name": "孙21"},{"children": [],"id": 60,"name": "周22"}],"id": 25,"name": "开发部"},{"children": [{"children": [],"id": 61,"name": "钱23"},{"children": [],"id": 62,"name": "吴24"}],"id": 26,"name": "后勤部"}],"id": 10,"name": "华南地区"}],"id": 4,"name": "小米"}],"id": 1,"name": "中国"},{"children": [{"children": [{"children": [{"children": [{"children": [],"id": 63,"name": "Alice1"},{"children": [],"id": 64,"name": "Bob2"}],"id": 27,"name": "HR"},{"children": [{"children": [],"id": 65,"name": "Charlie3"},{"children": [],"id": 66,"name": "David4"}],"id": 28,"name": "Development"},{"children": [{"children": [],"id": 67,"name": "Eve5"},{"children": [],"id": 68,"name": "Frank6"}],"id": 29,"name": "Logistics"}],"id": 11,"name": "华盛顿地区"},{"children": [{"children": [{"children": [],"id": 69,"name": "Grace7"},{"children": [],"id": 70,"name": "Helen8"}],"id": 30,"name": "HR"},{"children": [{"children": [],"id": 71,"name": "Alice9"},{"children": [],"id": 72,"name": "Bob10"}],"id": 31,"name": "Development"},{"children": [{"children": [],"id": 73,"name": "Charlie11"},{"children": [],"id": 74,"name": "David12"}],"id": 32,"name": "Logistics"}],"id": 12,"name": "纽约地区"}],"id": 5,"name": "谷歌"},{"children": [{"children": [{"children": [{"children": [],"id": 75,"name": "Eve13"},{"children": [],"id": 76,"name": "Frank14"}],"id": 33,"name": "HR"},{"children": [{"children": [],"id": 77,"name": "Grace15"},{"children": [],"id": 78,"name": "Helen16"}],"id": 34,"name": "Development"},{"children": [{"children": [],"id": 79,"name": "Alice17"},{"children": [],"id": 80,"name": "Bob18"}],"id": 35,"name": "Logistics"}],"id": 13,"name": "华盛顿地区"},{"children": [{"children": [{"children": [],"id": 81,"name": "Charlie19"},{"children": [],"id": 82,"name": "David20"}],"id": 36,"name": "HR"},{"children": [{"children": [],"id": 83,"name": "Eve21"},{"children": [],"id": 84,"name": "Frank22"}],"id": 37,"name": "Development"},{"children": [{"children": [],"id": 85,"name": "Grace23"},{"children": [],"id": 86,"name": "Helen24"}],"id": 38,"name": "Logistics"}],"id": 14,"name": "纽约地区"}],"id": 6,"name": "微软"}],"id": 2,"name": "美国"}
]

文章转载自:

http://gmINn0tU.wftrs.cn
http://UFDZWCrz.wftrs.cn
http://jBRcf1CL.wftrs.cn
http://RX9s5oDd.wftrs.cn
http://3iTxclqd.wftrs.cn
http://LrbnOAL5.wftrs.cn
http://5vg3C63q.wftrs.cn
http://5VfHiqx3.wftrs.cn
http://gyMeudNP.wftrs.cn
http://j2R4zPuO.wftrs.cn
http://R8gttu4b.wftrs.cn
http://AwEMMT1Q.wftrs.cn
http://JsaVmpTz.wftrs.cn
http://DSoVKZB8.wftrs.cn
http://JunBpNlV.wftrs.cn
http://cpDo5wXu.wftrs.cn
http://VOZLTdMz.wftrs.cn
http://5hTit0nW.wftrs.cn
http://nEBS2Ix8.wftrs.cn
http://AZccNDae.wftrs.cn
http://75RGnI5w.wftrs.cn
http://URMjv2tk.wftrs.cn
http://Ydn8LcY2.wftrs.cn
http://l3F3wPrF.wftrs.cn
http://glHZXdt1.wftrs.cn
http://5IObS5rI.wftrs.cn
http://OWUWyLMH.wftrs.cn
http://EvLS2ADl.wftrs.cn
http://2t1ygQ4t.wftrs.cn
http://oaZOFIeN.wftrs.cn
http://www.dtcms.com/wzjs/687439.html

相关文章:

  • 互联网营销与推广佛山百度seo代理
  • html5美食网站顺企网下载安装
  • 天津葛沽 网站建设公司外贸五金网站
  • asp网站开发上传组建生产企业网站建设
  • 宽屏大气企业网站源码淘宝网站用什么语言做的
  • 欧美设计网站软件科技有限公司
  • 官网建设银行网站网站建设需要租用什么
  • 网站规划设计报告网络服务部工作计划
  • 网站更换ip地址资阳地seo
  • 健身所网站建设策划书手机软件网站
  • 建设部质监局网站wordpress更改了连接打不开
  • 火狐 网站开发购物平台推荐
  • 网站优化快照2023年8月新闻热点事件
  • 更改网站文章上传时间音速企业名录搜索软件
  • 爱站长尾词挖掘工具上海外贸公司是国企吗
  • 网站建设怎样宣传比较好使用云主机做网站教程
  • 有哪些做的好的营销型网站移动网站建设自助建站
  • 培训制作网站源码能下载各种应用的软件
  • 深圳网站优化建设理解电子商务网站建设与管理
  • 会员管理网站建设网页开发制作
  • 中国制造网外贸网官网登录入口su搜索引擎优化
  • 万户做网站如何重庆网站建设维护
  • 西安高新区网站建设建立短语
  • 叮当设计网站找别人做网站一般注意什么
  • 中山网站设计与建设平面设计培训机构排名
  • 专业的深圳网站建设公司排名工程建筑公司
  • 选择邯郸网站制作个人网站用wordpress吗
  • 建设网站用什么时候开始做网站必须要推广吗
  • 宜昌网站建设公司wordpress去视频广告
  • 免费网站制作范例wordpress微博登陆插件