浏览 1435 次
锁定老帖子 主题:关于递归的一个问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-06
最后修改:2009-01-06
/** * @see 得到某部件下的所有子件id组合 */ private void getAllChild(String partId, String allChild){ String sql="select prod.id from PlanProdInfo prod where prod.parentId="+partId; List tempList=generalObjectService.findBySql(sql); if (tempList != null && tempList.size() > 0) { Long id = null ; for(int i=0;i<tempList.size();i++){ id=(Long)tempList.get(i); allChild+=id+"," ; getAllChild(id.toString(),allChild); } } } allChild是对象,不是容器,最后还是为空,想后用集合list,修改下是这样: /** * @see 得到某部件下的所有子件id组合 */ private void getAllChild(String partId, List temp){ String sql="select prod.id from PlanProdInfo prod where prod.parentId="+partId; List tempList=generalObjectService.findBySql(sql); if (tempList != null && tempList.size() > 0) { Long id = null ; String idStr = "" ; for(int i=0;i<tempList.size();i++){ id=(Long)tempList.get(i); if(temp != null && temp.size() > 0 && temp.get(0) != null){ idStr = (String) temp.get(0) ; } temp.clear(); temp.add(idStr) ; getAllChild(id.toString(),temp); } } } 但是在递归里面在判断list,感觉效率很低,所以,最后直接把所有的id存放在list中,然后循环list,重新组装id,代码如下: /** * @see 得到某部件下的所有子件id组合 * @param String partId, List temp */ private void getAllChild(String partId, List temp){ String sql="select prod.id from PlanProdInfo prod where prod.parentId="+partId; List tempList=generalObjectService.findBySql(sql); if (tempList != null && tempList.size() > 0) { Long id = null ; for(int i=0;i<tempList.size();i++){ id=(Long)tempList.get(i); temp.add(id+",") ; getAllChild(id.toString(),temp); } } } 但是感觉这样效率也是很低,请各位指教啊! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-01-06
select name,level
from t_test connect by prior name = parent start with name='爷爷' |
|
返回顶楼 | |