使用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运用成树形结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringWebMVC的常用注解及应用分层架构详解

    SpringWebMVC的常用注解及应用分层架构详解

    这篇文章主要介绍了SpringWebMVC的常用注解及应用分层架构,SpringWebMVC是基于ServletAPI构建的原始Web框架,从⼀开始就包含在Spring框架中,感兴趣的朋友可以参考下
    2024-05-05
  • 从入门到超神进阶的Netty群聊系统

    从入门到超神进阶的Netty群聊系统

    本篇文章基于Netty做一个聊天室案例加强Netty的熟练度,案例的效果是服务端可以广播某客户端的消息给所有客户端。每个客户端监听键盘输入来获取消息,然后发送给服务端
    2021-08-08
  • 浅析对Spring aware接口理解

    浅析对Spring aware接口理解

    通过aware接口可以获取Spring容器相关信息,但这样会与Spring容器耦合,这篇文章主要介绍了Spring aware接口理解,需要的朋友可以参考下
    2022-08-08
  • Hadoop MultipleOutputs输出到多个文件中的实现方法

    Hadoop MultipleOutputs输出到多个文件中的实现方法

    这篇文章主要介绍了 Hadoop MultipleOutputs输出到多个文件中的实现方法的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • Java 如何通过注解实现接口输出时数据脱敏

    Java 如何通过注解实现接口输出时数据脱敏

    这篇文章主要介绍了Java 如何通过注解实现接口输出时数据脱敏,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 浅谈Java的两种多线程实现方式

    浅谈Java的两种多线程实现方式

    本篇文章主要介绍了浅谈Java的两种多线程实现方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • SpringBoot中实现Redis Stream队列的代码实例

    SpringBoot中实现Redis Stream队列的代码实例

    本文介绍了如何在Spring Boot中使用Redis Stream队列进行消息的生产和消费,涉及到的主要内容包括添加Redis依赖、配置RedisTemplate、创建生产者和消费者监听器等,需要的朋友可以参考下
    2024-09-09
  • JAVA实现简单停车场系统代码

    JAVA实现简单停车场系统代码

    JAVA项目中正号需要一个停车收费系统,就整理出来java实现的一个简单的停车收费系统给大家分享一下,希望对大家有所帮助
    2017-04-04
  • Spring Boot邮箱链接注册验证及注册流程

    Spring Boot邮箱链接注册验证及注册流程

    这篇文章给大家介绍Spring Boot邮箱链接注册验证问题及注册流程分析,通过实例代码给大家分享实现过程,感兴趣的朋友跟随小编一起看看吧
    2021-07-07
  • 浅谈Spring中单例Bean是线程安全的吗

    浅谈Spring中单例Bean是线程安全的吗

    这篇文章主要介绍了浅谈Spring中单例Bean是线程安全的吗?具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10

最新评论