private List<Post> getPostLower(List<Post> PostTops){
List<Post> postAll=new ArrayList<Post>();
// 上级
for(Post post:PostTops){
//查询到下级
List<Post> posts=basService.queryPostByParentId(post.getPostId());
//如果有下级 重新调用
if(posts!=null && posts.size()>0){
posts=getPostLower(posts);
post.setPosts(posts);
}
postAll.add(post);
}
return postAll;
}
做了个查询树形递归 但是递归次数太多报错了。。。除了修改内存有什么方法避免这个错误吗
贴一下报错的信息吧....
你这等于是深搜,属于暴力枚举式搜索,可以考虑有没有能剪枝的地方,如果没有,你试试别的方法,比如记忆化搜索,或者hash之类的,关键要看你整个代码要的功能是干什么
queryPostByParentId 上下级有首尾相接的吧
递归层次太深会导致堆栈不足,你可以将递归改成循环,方法是定义一个集合,不断将找到的节点展开添加进去,然后继续遍历这个集合添加下一层,这样就不用递归了。
循环调服务。这个只要层次多一些肯定要爆的