用递归的方法查询树形结构下的所有子节点

把查询的根节点id放到一个list里面,因为后面第二次调用函数的时候参数是一个list
public List getSid(List dmali) {
DmaInfoExample ex = new DmaInfoExample();
com.hunankeji.webapp.model.DmaInfoExample.Criteria ca = ex.createCriteria();
ca.andPidIn(dmali);
List list2 = new ArrayList();
List meterli = dmaInfoDao.selectByExample(ex);
for (DmaInfo dmaInfo : meterli) {
list2.add(dmaInfo.getId());
}
list2.addAll(dmali);
HashSet set = new HashSet();
for (Long long1 : list2) {
set.add(long1);
}
List list = new ArrayList();

list.addAll(set);

boolean b = list.containsAll(dmali) && dmali.containsAll(list);

if (b) {
return list;
} else {
return getSid(list);
}
}

你可能感兴趣的:(java)