使用Java将一个List运用递归转成树形结构案例
更新时间:2021年06月30日 15:53:18 作者:严老板的博客
这篇文章主要介绍了使用Java将一个List运用递归转成树形结构案例,本文通过详细的案例来解释说明了如何去操作,需要的朋友可以参考下
在开发中,我们会遇到将不同组织架构合并成tree这种树状结构,那么如果做呢?
实际上,我们也可以理解为如何将拥有父子关系的list转成树形结构,而这其中主要的方法就是递归!
1、实体对象:
@Data public class Node { private Integer id; private String city; private Integer pid; private List<Node> children; public Node(Integer id,String city,Integer pid){ this.id = id; this.city = city; this.pid = pid; } }
2、转换工具类:
public class TreeUtils { //把一个List转成树 static List<Node> buildTree(List<Node> list,Integer pid){ List<Node> tree=new ArrayList<>(); for(Node node:list){ if(Objects.equals(node.getPid(),pid)){ tree.add(findChild(node,list)); } } return tree; } static Node findChild(Node node, List<Node> list){ for(Node n:list){ if(Objects.equals(n.getPid(),node.getId())){ if(node.getChildren() == null){ node.setChildren(new ArrayList<Node>()); } node.getChildren().add(findChild(n,list)); } } return node; } public static void main(String[] args) { Node node0=new Node(0,"中国",-1); Node node1=new Node(1,"湖北省",0); Node node2=new Node(2,"武汉市",1); Node node3=new Node(3,"洪山区",2); Node node4=new Node(4,"宜昌市",1); Node node5=new Node(5,"上海市",0); Node node6=new Node(6,"静安区",5); List<Node> list=new ArrayList<>(); list.add(node3); list.add(node4); list.add(node1); list.add(node2); list.add(node5); list.add(node6); list.add(node0); List<Node> nodes = buildTree(list,-1); System.out.println(JSON.toJSONString(nodes)); } }
3、运行结果:
这样list就成功转换成为了tree装结构
到此这篇关于使用Java将一个List运用递归转成树形结构案例的文章就介绍到这了,更多相关Java将list运用成树形结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Spring Boot中自定义注解结合AOP实现主备库切换问题
这篇文章主要介绍了Spring Boot中自定义注解+AOP实现主备库切换的相关知识,本篇文章的场景是做调度中心和监控中心时的需求,后端使用TDDL实现分表分库,需要的朋友可以参考下2019-08-08Springboot整合Rabbitmq之Confirm和Return机制
这篇文章主要介绍了Springboot整合Rabbitmq之Confirm和Return详解,本篇重点进行Confirm 机制和Return 机制的实现和说明,通过实例代码相结合给大家详细介绍,对Springboot整合Rabbitmq相关知识感兴趣的朋友一起看看吧2022-02-02SpringBoot使用hutool-captcha实现验证码生成与验证
在springboot的登陆页面中为了防止机器大规模注册,机器暴力破解数据密码等危害,需要验证随机生成的验证码,本文主要介绍了SpringBoot使用hutool-captcha实现验证码生成与验证,感兴趣的可以了解一下2023-12-12
最新评论