【问题标题】:How to get all child of a parent and their children using recursion如何使用递归获取父母的所有孩子及其孩子
【发布时间】:2017-08-10 10:50:42
【问题描述】:

refference.

在这里,我想获取父母的所有孩子。 这是我的Screen.

在此屏幕中,我想保存所有行。为此,我创建了以下 bean。

public class AdminComponentBean{

    List<MultiAdminComponent> componentListbean;
}

另一个 Bean:-

public class MultiAdminComponent {

    private String componentName;
    private String componentIdentification;
    private String componentType;
    private String componentState;
    private String componentUrl;
    private String rowId;
    private List<MultiAdminComponent> items;
    }

在我的服务中,我尝试找回所有的孩子。但我无法得到父母的孩子。

  List < MultiAdminComponent > adminComponentList = adminComponentBean.getComponentListbean();
       for (MultiAdminComponent adminComponentListBean: adminComponentList) {

          flag = BaseDAO.getAdminComponentDAOObject().saveParentComponentDetails(adminComponentListBean);//Here the parents will save but not the childs
          for (MultiAdminComponent adminComponentchild: adminComponentListBean.getItems()) {//here I am trying to save childs

          }
 }

【问题讨论】:

    标签: java


    【解决方案1】:

    你可以这样写递归方法:

    void addChildren(MultiAdminComponent parent, List<MultiAdminComponent> children) {
        if(null != parent.getItems()) {
            for(MultiAdminComponent child : parent.getItems()) {
                children.add(child);
                addChildren(child, children);
            }
        }
    }
    

    并用一个空列表调用它,例如:

    MultiAdminComponent parent; //parent
    List<MultiAdminComponent> children = new ArrayList<>();
    addChildren(parent, children);
    

    方法调用后,children 列表应该有所有子对象。

    【讨论】:

    • 以上代码运行正常,获取数据的时候还需要写同样的递归方法吗?
    • 可以调用同样的方法获取数据
    • 我无法使用与获取记录时相同的方法,因此不会有子关系和父关系。我将获取单独的记录
    • 如果我使用相同的方法,那么该对象应该包含子对象,因此它将提供父对象的所有子对象
    最近更新 更多