【java遞歸生成樹形結構】

項目開發中,幾乎無法避免的會遇到樹形結構,今天和大家分享java後端如何處理數據爲樹形結構。

前端處理樹形結構,後端生成樹形結構。

Entity實體層:

   此處省略好幾個實體字段。

    /**
     * 孩子節點集合
     */
    private List<OrganizationVO> child = new ArrayList<OrganizationVO>();

Controller層:

OrganizationVO list = organizationService.selectCategoryAndChildrenById(id);

Service業務層:

/**
     * 遞歸查詢本節點的id和孩子節點的id
     * @param id
     * @return
     */
    OrganizationVO selectCategoryAndChildrenById(Long id);

ServiceImpl業務實現:

    /**
     * 遞歸查詢本節點的id和孩子節點的id
     *
     * @param id
     * @return
     */
    @Override
    public OrganizationVO selectCategoryAndChildrenById(Long id) {
        return findChildCatgoryBak(id);
    }
    
    /**
     * 遞歸算法-算出子節點
     */
    public OrganizationVO findChildCatgoryBak(Long orgId) {
        List<OrganizationVO> childList = new ArrayList<>();
        // 通過id獲取所有VO信息
        OrganizationVO organizationVO = iOrganizationService.get(orgId);

        //查找子節點,遞歸程序必須要有一個出口
        List<OrganizationVO> organizationList = iOrganizationService.getChildren(null, orgId);
        //organizationVO.setChild(organizationList);
        for (OrganizationVO item : organizationList) {
            childList.add(findChildCatgoryBak(item.getId()));
        }
        organizationVO.setChild(childList);
        return organizationVO;
    }

業務之中的判斷自己可以加上,比如通過Id獲取這條信息是否爲null。

測試結果:

{
  "code": 0,
  "message": "獲取組織成功",
  "items": {
    "id": 2,
    "createTime": null,
    "modifyTime": "2020-04-21 16:37:35",
    "creatorId": 0,
    "modifierId": 0,
    "parentId": 0,
    "orgName": "電子商品",
    "orgState": "ENABLE",
    "description": "",
    "orgSort": 1,
    "child": [
      {
        "id": 3,
        "createTime": "2020-04-21 16:41:07",
        "modifyTime": "2020-04-22 10:40:52",
        "creatorId": 0,
        "modifierId": 0,
        "parentId": 2,
        "orgName": "電腦",
        "orgState": "ENABLE",
        "description": "",
        "orgSort": 1,
        "child": [
          {
            "id": 21,
            "createTime": "2020-04-23 23:11:45",
            "modifyTime": "2020-04-23 23:11:45",
            "creatorId": null,
            "modifierId": null,
            "parentId": 3,
            "orgName": "筆記本電腦",
            "orgState": "ENABLE",
            "description": "是佛山東莞給",
            "orgSort": null,
            "child": []
          }
        ]
      },
      {
        "id": 13,
        "createTime": "2020-04-22 16:34:08",
        "modifyTime": "2020-04-22 16:34:08",
        "creatorId": null,
        "modifierId": null,
        "parentId": 2,
        "orgName": "新增組織1",
        "orgState": "ENABLE",
        "description": "",
        "orgSort": 4,
        "child": []
      },
      {
        "id": 14,
        "createTime": "2020-04-22 19:07:58",
        "modifyTime": "2020-04-22 19:07:58",
        "creatorId": null,
        "modifierId": null,
        "parentId": 2,
        "orgName": "測試",
        "orgState": "ENABLE",
        "description": "是佛山東莞給",
        "orgSort": null,
        "child": []
      },
      {
        "id": 16,
        "createTime": "2020-04-23 10:13:26",
        "modifyTime": "2020-04-23 10:13:26",
        "creatorId": null,
        "modifierId": null,
        "parentId": 2,
        "orgName": "112",
        "orgState": "ENABLE",
        "description": null,
        "orgSort": null,
        "child": []
      },
      {
        "id": 20,
        "createTime": "2020-04-23 22:33:10",
        "modifyTime": "2020-04-23 22:33:10",
        "creatorId": null,
        "modifierId": null,
        "parentId": 2,
        "orgName": "測試1111111",
        "orgState": "ENABLE",
        "description": null,
        "orgSort": 3,
        "child": []
      }
    ]
  }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章