java - 在java中使用递归重复值获取字符串列表

标签 java recursion

我想要基于记录选择的表中的姓名列表。

例如,如果我选择 Id = 1,那么我需要列表值 (A,b,c,d) 及其所有 child 的 child 。

以下是我的表格数据。

Id(1,2,3,4,5) 姓名(a,b,c,d,e) ParentId(-,1,1,3,-)

以下是我的递归代码

public List<String> selectData(int orgId) {
    String parentId = String.valueOf(orgId);        

    List<Object> listData = selectAllData();// here parent select
    List<String> returnList = new ArrayList<String>();
    for (Object parents : listData) {


            List<String> list = this.getChildFor(parents.getId());

            for (String child : list) {
                returnList.add(child);
            }

    }
    for(String enty : listData){
        returnList.add(enty);
    }
    return returnList;
}

public List<String> getChildFor(int orgId) {

    String parentId = String.valueOf(orgId);
    int pId = 0;
    List<Object> listData = selectByExample(); // here child select from all record based on orgId.
    List<String> returnList = new ArrayList<String>();
    do {
        for (Object parents : listData) {
                returnList.add(parents.name);
                List<String> list = this.getChildFor(parents.getId);
                for (String child : list) {
                    returnList.add(child.getname());
                }

        }
        pId = 0;
    } while (pId != 0);
    for(String enty : listData){
        returnList.add(enty);
    }
    listData = null;
    return returnList;
}

在“returnList”列表中,我得到了重复的值。 任何人都可以给我一些想法,谢谢。

最佳答案

getChildFor 方法中,您重复 listData 两次。

尝试删除

for(String enty : listData){
    returnList.add(enty);
}

因为它已经添加到returnList.add(parents.name);

关于java - 在java中使用递归重复值获取字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43775012/

相关文章:

java - 尝试从 .xsd 文件创建 Java 类时出错

c - 如何分配递归中的内存分配

c++ - 在平方二进制矩阵中找到二进制矩形的位置

c - 我的 C 程序无限递归,我不明白为什么

java - 如何检查两个 EditText 是否为空?

java - 如何将 txt 文件从互联网加载到我的 jsf 应用程序中?

java - 验证 dto spring boot 中的三个字段中的至少一个

java - 如何在java中创建反向 map ?

java - 四色图定理递归回溯算法

Java: "Unexpected Type; required: Variable; found: value"通过尝试返回一个值