Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免java中的嵌套for循环来获取继承人的体系结构数据?_Java_Spring Boot_Data Structures_Collections_Spring Data Jpa - Fatal编程技术网

如何避免java中的嵌套for循环来获取继承人的体系结构数据?

如何避免java中的嵌套for循环来获取继承人的体系结构数据?,java,spring-boot,data-structures,collections,spring-data-jpa,Java,Spring Boot,Data Structures,Collections,Spring Data Jpa,//此方法将返回引用名称列表,在此方法中,我使用嵌套//for循环编写代码此处理仅3个子文件夹设置如果还有一个子文件夹以及如何处理它//如果没有for循环,总体上我应该动态处理它 // Iterate the subfolders to populate the orgRefName List //In this we are handling the subfolders with the use of nested for loops, Ho

//此方法将返回引用名称列表,在此方法中,我使用嵌套//for循环编写代码此处理仅3个子文件夹设置如果还有一个子文件夹以及如何处理它//如果没有for循环,总体上我应该动态处理它

            // Iterate the subfolders to populate the orgRefName List 
            //In this we are handling the subfolders with the use of nested for loops, How to handle //the scenario if there is one more child Subfolder dynamically

// How to solve without using additional nested for loop to get the additional for loop
            for (OrgDetails orgDetails : orgList) {
                mainSubFolder = orgDetails.getSubfolders();
                for (OrgSubfolderDetails orgDetails2 : mainSubFolder) {
                    childSubFolder1 = orgDetails2.getSubfolders();
                    if (!childSubFolder1.isEmpty()) {
                        for (OrgSubfolderDetails orgDetails3 : childSubFolder1) {
                            childSubFolder2 = orgDetails3.getSubfolders();
                            if (!childSubFolder2.isEmpty()) {
                                for (OrgSubfolderDetails orgDetails4 : childSubFolder2) {
                                    refDetails = orgDetails4.getOrgRefDetails();
                                    if (!refDetails.isEmpty()) {
                                        for (OrgRefDetails orgDetails5 : refDetails) {
                                            RefNameList.add(orgDetails5.getRefName());
                                        }
                                    }
                                }
                            }
                        }
                    }
    
                }
            }
            
            return RefNameList;
            
        }
//对于循环,此仅处理3个子文件夹设置如果还有一个子文件夹以及如何处理它//如果没有for循环,总体上我应该动态处理它

            // Iterate the subfolders to populate the orgRefName List 
            //In this we are handling the subfolders with the use of nested for loops, How to handle //the scenario if there is one more child Subfolder dynamically

// How to solve without using additional nested for loop to get the additional for loop
            for (OrgDetails orgDetails : orgList) {
                mainSubFolder = orgDetails.getSubfolders();
                for (OrgSubfolderDetails orgDetails2 : mainSubFolder) {
                    childSubFolder1 = orgDetails2.getSubfolders();
                    if (!childSubFolder1.isEmpty()) {
                        for (OrgSubfolderDetails orgDetails3 : childSubFolder1) {
                            childSubFolder2 = orgDetails3.getSubfolders();
                            if (!childSubFolder2.isEmpty()) {
                                for (OrgSubfolderDetails orgDetails4 : childSubFolder2) {
                                    refDetails = orgDetails4.getOrgRefDetails();
                                    if (!refDetails.isEmpty()) {
                                        for (OrgRefDetails orgDetails5 : refDetails) {
                                            RefNameList.add(orgDetails5.getRefName());
                                        }
                                    }
                                }
                            }
                        }
                    }
    
                }
            }
            
            return RefNameList;
            
        }

您可以使用队列原则。
在队列列表中,如果是it分支的最后一个元素,则添加一个结果列表,如果不是,则将其孩子添加到当前队列列表中。

如果您使用Java 8,使用flatmap的streams将帮助您实现这一点。 像这样的


如果使用java 7,我们可以递归地迭代OrgSubfolderDetails。

您能用示例解释一下吗?您可以使用递归来获取层次结构数据