Java树形结构递归查询方式
更新时间:2024年12月17日 10:32:23 作者:冷冷清清中的风风火火
文章介绍了Java中实现树形结构递归查询的方法,首先找出所有的根节点,然后通过循环遍历根节点,找到每个根节点的子节点,最终构建完整的树形结构,这是一种有效的递归查询思路,适用于需要层次化展示数据的场景
Java树形结构递归查询
思路
先找到所有的根节点,再通过循环遍历所有的根节点,找到每个跟节点的子节点,最终形成一个树形结构
/** * 构建树形结构数据new * @param org * @return */ public List<OrgEntity> builTree(OrgEntity org){ List<OrgEntity> treeMenus =new ArrayList<>(); // 查询所有数据 List<OrgEntity> reList = this.queryListByOrg(org); // 获取根节点数据 List<OrgEntity> rootList = this.getRootNode(reList); for(OrgEntity node : rootList){ // 为根节点数据递归添加字点数据 node=buildChilTree(node,reList); treeMenus.add(node); } return treeMenus; }
/** * 获取根节点new * @param list * @return */ public List<OrgEntity> getRootNode(List<OrgEntity> list){ List<OrgEntity> rootMenuLists =new ArrayList // 遍历list,获取根节点数据 for(OrgEntity menuNode : list) { boolean isExit = false; for(OrgEntity node : list){ if(menuNode.getParentId() != null && menuNode.getParentId().equals(node.getId())){ isExit = true; break; } } // 如果遍历该数据没有上级节点,就放到根节点list中,否则就不放 if(!isExit){ rootMenuLists.add(menuNode); } } return rootMenuLists; }
//递归,建立子树形结构new public OrgEntity buildChilTree(OrgEntity pNode,List<OrgEntity> list){ List<OrgEntity> chilMenus =new ArrayList<>(); for(OrgEntity menuNode : list) { if(menuNode.getParentId().equals(pNode.getId())) { chilMenus.add(buildChilTree(menuNode,list)); } } pNode.setChildren(chilMenus); return pNode; }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
解决RestTemplate 的getForEntity调用接口乱码的问题
这篇文章主要介绍了解决RestTemplate 的getForEntity调用接口乱码的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08java.lang.UnsupportedClassVersionError错误的解决办法(附图文)
这篇文章主要给大家介绍了关于java.lang.UnsupportedClassVersionError错误的解决办法,"java.lang.UnsupportedClassVersionError"意味着您正在运行的Java版本与编译该类时使用的Java版本不兼容,需要的朋友可以参考下2023-10-10SpringCloud Gateway中GatewayFilterChain执行流程详解
Spring Cloud Gateway旨在为微服务架构提供一种简单有效的、统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,它不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全、监控/埋点和限流等2022-10-10SVN出现提示org.apache.subversion.javahl.ClientException: Attempt
这篇文章主要介绍了SVN出现提示org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir解决方案的相关资料,需要的朋友可以参考下2016-12-12
最新评论