赞
踩
大部门场景需要展示树形结构的数据,目的是一目了然能够看明白数据,特别是对于组织或者一些企业以及部门
下面给大家讲一下我写树形结构时候的一个思路
1、了解树形结构是如何形成的:因为树形结构肯定是有父级和子级,这样才能够关联起来
2、在我的了解范围内,有两种,一种是无限层级,子级和父级在一张表里面,第二分别在两张表里面,需要关联查询
1.1那么我们第一步要做的就是先把最外层的节点构造出来,然后依次往子级里面放相关的数据
1、可以在实体里面 声明一个集合
2、拿到数据之后,先把最外层节点收集起来,下面给大家上代码,简单的实现
2.1.1实体类
- public class TreeEntity implements Serializable {
- private Integer id; //子级
- private String name; //名称
- private Integer pid; //父级id
- @JsonInclude(JsonInclude.Include.NON_EMPTY) //忽略空值
- private List<TreeEntity> childrenList; //子级集合
- }
2.2.2实现需求
- public class TreeDemo{
- public static void main(String[] args) {
- List<TreeEntity> treeList = init();
- List<TreeEntity> collect = treeList.stream()
- .filter(item -> item.getPid() == 0)
- .map(item -> {
- item.setChildrenList(getChildren(item, treeList));
- return item;
- }).
- collect(Collectors.toList());
- System.out.println(new Gson().toJsonTree(collect));
- }
-
- private static List<TreeEntity> getChildren(TreeEntity treeEntity, List<TreeEntity> treeEntityList) {
- List<TreeEntity> collect = treeEntityList.stream()
- .filter(item -> item.getPid().equals(treeEntity.getId()))
- .map(item -> {
- item.setChildrenList(getChildren(item, treeEntityList));
- return item;
- })
- .collect(Collectors.toList());
- return collect;
- }
-
- }
2.2.3结果集
- [{
- "id": 1,
- "name": "1-1",
- "pid": 0,
- "childrenList": [{
- "id": 3,
- "name": "1-1-1",
- "pid": 1,
- "childrenList": [{
- "id": 7,
- "name": "1-1-1-1",
- "pid": 3,
- "childrenList": [{
- "id": 11,
- "name": "1-1-1-1-1",
- "pid": 7,
- "childrenList": []
- }]
- }, {
- "id": 8,
- "name": "1-1-1-2",
- "pid": 3,
- "childrenList": []
- }]
- }, {
- "id": 4,
- "name": "1-1-2",
- "pid": 1,
- "childrenList": []
- }]
- }, {
- "id": 2,
- "name": "2-1",
- "pid": 0,
- "childrenList": [{
- "id": 5,
- "name": "2-1-1",
- "pid": 2,
- "childrenList": [{
- "id": 9,
- "name": "2-1-1-1",
- "pid": 5,
- "childrenList": [{
- "id": 12,
- "name": "2-1-1-1-1",
- "pid": 9,
- "childrenList": []
- }]
- }, {
- "id": 10,
- "name": "2-1-1-2",
- "pid": 5,
- "childrenList": []
- }]
- }, {
- "id": 6,
- "name": "2-1-2",
- "pid": 2,
- "childrenList": []
- }]
- }]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。