我如何将孩子设置在列表中

  • 本文关键字:列表 设置 孩子 java
  • 更新时间 :
  • 英文 :


我试图从该表上的一个表中获取数据列表,该数据具有来自" hiercd"one_answers" parenthiercd"的亲子关系。在我第一次获得所有父母列表中。之后,当我构建数据时,我需要让那些父母的所有孩子。这可以像我在预期结果中所显示的那样多级。

表具有如下

的数据
  **hierCd**         **Name**         **parentHierCd**
   TEA-1               tea1              TEA
   TEA-2               tea2              TEA
   TEA-3               tea3              TEA
   TEAA-1              teaa-1            TEA-1
   TEAA-2              teaa-2            TEA-1
   TEAAA-1             teaaa-1           TEAA-1
   ITC-1               itc-1             ITC
   ITC-2               itc-2             ITC
   ITCA-1              itca-1            ITC-1
   ITCA-2              itca-2            ITC-1

我提到了所有代码。HIER是实体文件,它是由DB映射的。委员会正在使用REST API方面设置数据。

//Committee api model class
public class Committee {
    @JsonProperty("id")
    private UUID id = null;
    @JsonProperty("name")
    private String name = null;
    @JsonProperty("code")
    private String code = null;
    @JsonProperty("parentCd")
    private String parentCd = null;
    @JsonProperty("children")
    @Valid
    private List<Committee> children = null;
    with getters and setters
}
//Hier entity model class
public class Hier {
    private String hierCd;
    private String hierTyp;
    private String hierName;
    private String uuid;
    private String parentHierCd;
    with getters and setters
}
//This method is calling for get parent record.
public List<Committee> getCommittees(){
    private List<String> PARENT_CDS = Arrays.asList(new String[] { "TEA", "ITC" });
    List<Committee> committees = new ArrayList<>();
    List<Hier> committeeHierarchies = committeeRepository.findParentHiersByHierCdInOrderByHierNameAsc(PARENT_CDS);
    for(Hier hier:committeeHierarchies)
    {
        committees.add(committeeBuilder(hier));
    }
    return committees;
}
// Building committee with sub committee
private Committee committeeBuilder(Hier hier) {
    Committee committee = new Committee();
    committee.setId(UUID.fromString(hier.getUuid()));
    committee.setCode(hier.getHierCd());
    committee.setName(hier.getHierName());
    committee.setParentCd(hier.getParentHierCd());
    if(hiertype.equals("allCommittee")){
        committee.setChildren(getChildrenByParentCd(hier.getHierCd()));
    }
    return committee;
}
//Return sub committees by parent hier code
public List<Committee> getChildrenByParentCd(String parentCd) {
    List<Committee> committees = new ArrayList<>();
    List<Hier> children = committeeRepository.findChildrenByParentHierCd(parentCd);
    for (Hier hier : children) {
        Committee committee = new Committee();
        committee.setId(UUID.fromString(hier.getUuid()));
        committee.setCode(hier.getHierCd());
        committee.setName(hier.getHierName());
        committee.setParentCd(hier.getParentHierCd());
        committees.add(committee);
    }
    return committees;
}

上面的代码如下所示,它仅在两个级别(父和孩子(中返回数据,但是我需要像下面提到的递归有关。

 > TEA 
   > TEA-1
   > TEA-2
   > TEA-3
 > ITC 
   > ITC-1
   > ITC-2

结果应该像以下

 > TEA 
   > TEA-1
     > TEAA-1
       > TEAAA-1
     > TEAA-2
   > TEA-2
   > TEA-3
 > ITC 
   > ITC-1
      > ITCA-1
      > ITCA-2
   > ITC-2

使用递归函数方法解决此问题。喜欢找到子女是否适用于父母。基于该呼叫委员会构成

最新更新