当前位置:   article > 正文

Java树形结构查询(Steam)

java树形结构查询

大部门场景需要展示树形结构的数据,目的是一目了然能够看明白数据,特别是对于组织或者一些企业以及部门
下面给大家讲一下我写树形结构时候的一个思路

1、了解树形结构是如何形成的:因为树形结构肯定是有父级和子级,这样才能够关联起来
2、在我的了解范围内,有两种,一种是无限层级,子级和父级在一张表里面,第二分别在两张表里面,需要关联查询

1.1那么我们第一步要做的就是先把最外层的节点构造出来,然后依次往子级里面放相关的数据
      1、可以在实体里面 声明一个集合
      2、拿到数据之后,先把最外层节点收集起来,下面给大家上代码,简单的实现

2.1.1实体类

  1. public class TreeEntity implements Serializable {
  2. private Integer id; //子级
  3. private String name; //名称
  4. private Integer pid; //父级id
  5. @JsonInclude(JsonInclude.Include.NON_EMPTY) //忽略空值
  6. private List<TreeEntity> childrenList; //子级集合
  7. }

2.2.2实现需求

  1. public class TreeDemo{
  2. public static void main(String[] args) {
  3. List<TreeEntity> treeList = init();
  4. List<TreeEntity> collect = treeList.stream()
  5. .filter(item -> item.getPid() == 0)
  6. .map(item -> {
  7. item.setChildrenList(getChildren(item, treeList));
  8. return item;
  9. }).
  10. collect(Collectors.toList());
  11. System.out.println(new Gson().toJsonTree(collect));
  12. }
  13. private static List<TreeEntity> getChildren(TreeEntity treeEntity, List<TreeEntity> treeEntityList) {
  14. List<TreeEntity> collect = treeEntityList.stream()
  15. .filter(item -> item.getPid().equals(treeEntity.getId()))
  16. .map(item -> {
  17. item.setChildrenList(getChildren(item, treeEntityList));
  18. return item;
  19. })
  20. .collect(Collectors.toList());
  21. return collect;
  22. }
  23. }

2.2.3结果集

  1. [{
  2. "id": 1,
  3. "name": "1-1",
  4. "pid": 0,
  5. "childrenList": [{
  6. "id": 3,
  7. "name": "1-1-1",
  8. "pid": 1,
  9. "childrenList": [{
  10. "id": 7,
  11. "name": "1-1-1-1",
  12. "pid": 3,
  13. "childrenList": [{
  14. "id": 11,
  15. "name": "1-1-1-1-1",
  16. "pid": 7,
  17. "childrenList": []
  18. }]
  19. }, {
  20. "id": 8,
  21. "name": "1-1-1-2",
  22. "pid": 3,
  23. "childrenList": []
  24. }]
  25. }, {
  26. "id": 4,
  27. "name": "1-1-2",
  28. "pid": 1,
  29. "childrenList": []
  30. }]
  31. }, {
  32. "id": 2,
  33. "name": "2-1",
  34. "pid": 0,
  35. "childrenList": [{
  36. "id": 5,
  37. "name": "2-1-1",
  38. "pid": 2,
  39. "childrenList": [{
  40. "id": 9,
  41. "name": "2-1-1-1",
  42. "pid": 5,
  43. "childrenList": [{
  44. "id": 12,
  45. "name": "2-1-1-1-1",
  46. "pid": 9,
  47. "childrenList": []
  48. }]
  49. }, {
  50. "id": 10,
  51. "name": "2-1-1-2",
  52. "pid": 5,
  53. "childrenList": []
  54. }]
  55. }, {
  56. "id": 6,
  57. "name": "2-1-2",
  58. "pid": 2,
  59. "childrenList": []
  60. }]
  61. }]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/528266
推荐阅读
相关标签
  

闽ICP备14008679号