我希望根据记录选择从表中列出名称。
例如,如果我选择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”列表中,我得到了重复值。 任何人都对此表示感谢。
答案 0 :(得分:0)
在getChildFor
方法中,您迭代listData
两次。
尝试删除
for(String enty : listData){
returnList.add(enty);
}
因为它已添加到returnList.add(parents.name);