问题描述
- java 递归报错 求大神帮忙
-
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 上下级有首尾相接的吧
解决方案五:
你这样用数据库链接资源当然内存不够了。
可以把要查的数据全部查询出来。放在一个HashMap中,再对这个map做处理。
解决方案六:
循环调服务。这个只要层次多一些肯定要爆的
时间: 2024-09-26 12:04:14