数据库中机构表为自身引用。
如果一个(org)机构有很多的下级机构而下级机构还有下级
这个时候我想用递归求出机构(org)下而包含的所有机构
怎么做。。我是这样写的不过有点问题public List<org> getAll(Org org){
List<Org> list=new ArrayList();
if(org.orgrazation){ //判断是否有子机构
list.add(org);
}
for(Org org list){
if(org.orgrazation){ //判断是否有子机构
getAll(org);
} }
return list;
}
如果一个(org)机构有很多的下级机构而下级机构还有下级
这个时候我想用递归求出机构(org)下而包含的所有机构
怎么做。。我是这样写的不过有点问题public List<org> getAll(Org org){
List<Org> list=new ArrayList();
if(org.orgrazation){ //判断是否有子机构
list.add(org);
}
for(Org org list){
if(org.orgrazation){ //判断是否有子机构
getAll(org);
} }
return list;
}
List <Org> list=new ArrayList();
if(org.orgrazation){ //判断是否有子机构
list.add(org);
}
for(Org o : list){
if(o.orgrazation){ //判断是否有子机构
List<Org> os = getAll(r);
list.addAll(os);
} }
return list;
}
List <Org> list=new ArrayList();
if(!org.orgrazation){
return; //如果没有退出
}
for(Org org list){
if(org.orgrazation){ //判断是否有子机构
list.add(org);
//判断是否有子机构
getAll(org);
} }
return list;
}
你这递归明显的不是实际意义上的递归
getAll(org); 这个返回一个list但是你没添加到当前这个结果集当中
List <Org> list=new ArrayList();
if(org.orgrazation){
list.add(org); //这里尽量用循环结果集将所有的下属机构都add到list当中
}
for(int i = 0 ;i < list.Size();i++){
Org suborg = (Org)list.get(i);
if(suborg.orgrazation){
list.add(suborg.suborg);//将所有的下属都添加进去 到i=listsize的时候就说明已经在没有下属关系可以添加了
}
}
list.add(org);
if(org.child.size()>0){ //有子机构
for(int i=0;i<org.child.size();i++)
{
Org child=org.child.get(i);
getAll(child,list);
} }else //没有子机构
{
return;
}
}
if(org.child.size()>0){ //有子机构
list.add(org);
for(int i=0;i <org.child.size();i++)
{
Org child=org.child.get(i);
getAll(child,list);
} }else //没有子机构
{
return;
}}
[/Quote]