欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Java將一個List運用遞歸轉成樹形結構案例

 更新時間:2021年06月30日 15:53:18   作者:嚴老板的博客  
這篇文章主要介紹了使用Java將一個List運用遞歸轉成樹形結構案例,本文通過詳細的案例來解釋說明了如何去操作,需要的朋友可以參考下

在開發(fā)中,我們會遇到將不同組織架構合并成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,"洪山區(qū)",2);
        Node node4=new Node(4,"宜昌市",1);
        Node node5=new Node(5,"上海市",0);
        Node node6=new Node(6,"靜安區(qū)",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運用成樹形結構內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用maven插件對java工程進行打包過程解析

    使用maven插件對java工程進行打包過程解析

    這篇文章主要介紹了使用maven插件對java工程進行打包過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 一文詳解Java如何優(yōu)雅地判斷對象是否為空

    一文詳解Java如何優(yōu)雅地判斷對象是否為空

    這篇文章主要給大家介紹了關于Java如何優(yōu)雅地判斷對象是否為空的相關資料,在Java中可以使用以下方法優(yōu)雅地判斷一個對象是否為空,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • Java mysql詳細講解雙數據源配置使用

    Java mysql詳細講解雙數據源配置使用

    在開發(fā)過程中我們常常會用到兩個數據庫,一個數據用來實現一些常規(guī)的增刪改查,另外一個數據庫用來實時存數據。進行數據的統(tǒng)計分析??梢宰x寫分離??梢愿玫膬?yōu)化和提高效率;或者兩個數據存在業(yè)務分離的時候也需要多個數據源來實現
    2022-06-06
  • SpringBoot如何統(tǒng)一處理返回結果和異常情況

    SpringBoot如何統(tǒng)一處理返回結果和異常情況

    這篇文章主要介紹了SpringBoot如何統(tǒng)一處理返回結果和異常情況問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • java中java.util.Date和java.sql.Date之間的轉換的示例

    java中java.util.Date和java.sql.Date之間的轉換的示例

    java.util.Date是java.sql.Date的父類,有時候在和SqlServer數據庫打交道時,也會遇到,本文主要介紹了java中java.util.Date和java.sql.Date之間的轉換的示例,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • Spring mvc工作原理_動力節(jié)點Java學院整理

    Spring mvc工作原理_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了Spring mvc工作原理的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Mybatis實現分頁的注意點

    Mybatis實現分頁的注意點

    Mybatis提供了強大的分頁攔截實現,可以完美的實現分功能。下面小編給大家分享小編在使用攔截器給mybatis進行分頁所遇到的問題及注意點,需要的朋友一起看看吧
    2017-07-07
  • Spring中的SpringData詳細說明

    Spring中的SpringData詳細說明

    這篇文章主要介紹了Spring中的SpringData詳細說明,Spring Data 是Spring 的一個子項目, 旨在統(tǒng)一和簡化對各類型持久化存儲, 而不拘泥于是關系型數據庫還是NoSQL 數據存儲,需要的朋友可以參考下
    2023-11-11
  • Spring?Boot用戶注冊驗證的實現全過程記錄

    Spring?Boot用戶注冊驗證的實現全過程記錄

    最近在設計自己的博客系統(tǒng),涉及到用戶注冊與登錄驗證,所以下面這篇文章主要給大家介紹了關于Spring?Boot用戶注冊驗證的實現全過程,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • Java對象轉JSON時動態(tài)的增刪改查屬性詳解

    Java對象轉JSON時動態(tài)的增刪改查屬性詳解

    這篇文章主要介紹了Java對象轉JSON時如何動態(tài)的增刪改查屬性的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11

最新評論