我想要基于记录选择的表中的姓名列表。
例如,如果我选择 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/