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

时间:2017-05-04 06:03:14

标签: java recursion

我希望根据记录选择从表中列出名称。

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

以下是我的表数据。

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”列表中,我得到了重复值。 任何人都对此表示感谢。

1 个答案:

答案 0 :(得分:0)

getChildFor方法中,您迭代listData两次。

尝试删除

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

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