亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java實現(xiàn)樹形結(jié)構(gòu)的示例代碼

 更新時間:2022年05月13日 17:16:08   作者:小劉要努力(????_??)?  
由于業(yè)務(wù)需要,后端需要返回一個樹型結(jié)構(gòu)給前端,包含父子節(jié)點的數(shù)據(jù)已經(jīng)在數(shù)據(jù)庫中存儲好。本文將為大家分享Java現(xiàn)樹形結(jié)構(gòu)的示例代碼,需要的可以參考下

前言

由于業(yè)務(wù)需要,后端需要返回一個樹型結(jié)構(gòu)給前端,包含父子節(jié)點的數(shù)據(jù)已經(jīng)在數(shù)據(jù)庫中存儲好,現(xiàn)在需要做的是如何以樹型結(jié)構(gòu)的形式返給給前端。

數(shù)據(jù)庫表結(jié)構(gòu)

實現(xiàn)思路

1、拿到有父子節(jié)點的集合數(shù)據(jù)

2、遍歷集合數(shù)據(jù),拿到所有的根節(jié)點

3、遍歷根節(jié)點,拿到所有的子節(jié)點

4、遞歸子節(jié)點,將遞歸的子節(jié)點接上其父節(jié)點,直到子節(jié)點為空,遞歸完成

5、遞歸好后以集合形式返回,返回前端時以JSON格式轉(zhuǎn)換后返回

具體代碼

1、造數(shù)據(jù),和數(shù)據(jù)庫表數(shù)據(jù)一致

package com.lyq.generateTree;
 
import com.alibaba.fastjson.JSON;
 
import java.util.ArrayList;
import java.util.List;
 
/**
 * @author : [LiuYanQiang]
 * @version : [v1.0]
 * @className : TreeMain
 * @description : [描述說明該類的功能]
 * @createTime : [2022/5/3 0:05]
 * @updateUser : [LiuYanQiang]
 * @updateTime : [2022/5/3 0:05]
 * @updateRemark : [描述說明本次修改內(nèi)容]
 */
public class TreeMain {
    public static void main(String[] args) {
        List<Tree> list = new ArrayList<>();
 
        //造數(shù)據(jù)
        list.add(new Tree("22650", "0", "第一周"));
        list.add(new Tree("22651", "22650", "1.1  隨堂練習(xí):《你認為以下屬于人工智能的是什么呢?》,時間:0.5min"));
        list.add(new Tree("22652", "22650", "1.2  主題討論:《使用循環(huán)代碼塊繪制正五角星》,時間:5min"));
        list.add(new Tree("22653", "22650", "1.3  主題討論:《延時測試》,時間:0.5min"));
        list.add(new Tree("22654", "22650", "1.4  調(diào)查問卷:《測試延時時間》, 時間:0.5min"));
        list.add(new Tree("22655", "22650", "1.5  研究與挑戰(zhàn):翟文彪老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22656", "22650", "1.6  研究與挑戰(zhàn):米新江教授開播啦,時間:1min,[N]"));
        list.add(new Tree("22657", "22656", "1.6.1  研究與挑戰(zhàn):丁中文老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22658", "22656", "1.6.2  研究與挑戰(zhàn):郝曉軍老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22659", "22656", "1.6.3  研究與挑戰(zhàn):張娟老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22660", "22656", "1.6.4  研究與挑戰(zhàn):王懷軍老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22661", "22656", "1.6.5  研究與挑戰(zhàn):何操老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22662", "22656", "1.6.6  研究與挑戰(zhàn):武新麗老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22663", "22656", "1.6.7  一鍵簽到:人臉識別,時間:2min"));
        list.add(new Tree("22664", "22656", "1.6.8  手勢簽到:人臉識別22,時間:2min"));
        list.add(new Tree("22665", "22656", "1.6.9  研究與挑戰(zhàn):吳欣明老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22666", "22656", "1.6.10  研究與挑戰(zhàn):程艷艷老師開播啦,時間:1min,[N]"));
        list.add(new Tree("22667", "22656", "1.6.11  研究與挑戰(zhàn):本學(xué)期課程內(nèi)容,時間:0.5min"));
        list.add(new Tree("22668", "22656", "1.6.12  研究與挑戰(zhàn):米老師的教學(xué)團隊介紹,時間:0.3min"));
        list.add(new Tree("22669", "22650", "1.7  研究與挑戰(zhàn):米老師的教學(xué)團隊介紹,時間:0.3min"));
        list.add(new Tree("22670", "22650", "1.8  研究與挑戰(zhàn):米老師的教學(xué)團隊介紹,時間:0.3min"));
        list.add(new Tree("22671", "22650", "1.9  研究與挑戰(zhàn):助教機器人提醒您參與活動,時間:2min"));
        list.add(new Tree("22672", "22650", "1.10  研究與挑戰(zhàn):AR系統(tǒng)使用教程-學(xué)生端,時間:5min"));
        list.add(new Tree("22673", "22672", "1.10.1  研究與挑戰(zhàn):不一樣的課堂修改版,時間:0.5min"));
        list.add(new Tree("22674", "22673", "1.10.1.1  研究與挑戰(zhàn):下載AR APP,時間:8min"));
        list.add(new Tree("22675", "22674", "1.10.1.1.1  研究與挑戰(zhàn):修改版手機端AR助教機器人的登錄,時間:5min"));
        list.add(new Tree("22676", "22674", "1.10.1.1.2  研究與挑戰(zhàn):app頁面展示,時間:2min"));
        list.add(new Tree("22677", "22674", "1.10.1.1.3  研究與挑戰(zhàn):使用網(wǎng)頁版方式, 時間:3min"));
        list.add(new Tree("22678", "22674", "1.10.1.1.4  研究與挑戰(zhàn):《使用學(xué)習(xí)通賬號密碼登錄AR網(wǎng)頁版》,時間:5min"));
        list.add(new Tree("22679", "22674", "1.10.1.1.5  主題討論:修改時間2022年4月4日《上傳:進入AR網(wǎng)頁版后的界面》,時間:3min"));
        list.add(new Tree("22680", "22673", "1.10.1.2  研究與挑戰(zhàn):AR學(xué)生端教程視頻,時間:2min"));
        list.add(new Tree("22681", "22672", "1.10.2  研究與挑戰(zhàn):修改時間2022年4月4日溫馨提示-釘釘,時間:0.3min"));
 
 
        list = new ReplacementTree().builTree(list);
 
        String jsonString = JSON.toJSONString(list);
        System.out.println(jsonString);
    }
}

2、樹型結(jié)構(gòu)實體類

package com.lyq.generateTree;
 
 
import java.util.ArrayList;
import java.util.List;
 
/**
 * @author : [LiuYanQiang]
 * @version : [v1.0]
 * @className : ReplacementTree
 * @description : [樹型結(jié)構(gòu)裝換]
 * @createTime : [2022/5/2 23:37]
 * @updateUser : [LiuYanQiang]
 * @updateTime : [2022/5/2 23:37]
 * @updateRemark : [描述說明本次修改內(nèi)容]
 */
public class ReplacementTree {
 
    /*
     * @version V1.0
     * Title: builTree
     * @author LiuYanQiang
     * @description 始樹形結(jié)構(gòu)創(chuàng)建
     * @createTime  2022/5/3 0:18
     * @param [list]
     * @return java.util.List<com.lyq.generateTree.Tree>*/
    public List<Tree> builTree(List<Tree> list) {
        List<Tree> treeList = new ArrayList<>();
        for (Tree tree : this.getRootNode(list)) {
            //建立子樹節(jié)點
            tree = this.buildChilTree(tree,list);
            //為根節(jié)點設(shè)置子樹節(jié)點
            treeList.add(tree);
        }
        return treeList;
    }
 
    /*
     * @version V1.0
     * Title: buildChilTree
     * @author LiuYanQiang
     * @description 通過遞歸來創(chuàng)建子樹形結(jié)構(gòu)
     * @createTime  2022/5/3 0:18
     * @param [tree, list]
     * @return com.lyq.generateTree.Tree*/
    private Tree buildChilTree(Tree tree,List<Tree> list) {
        List<Tree> treeList = new ArrayList<>();
        for (Tree t : list) {
            //判斷當前父節(jié)點是否存在子節(jié)點
            if (t.getP_id().equals(tree.getId())) {
                treeList.add(this.buildChilTree(t,list));
            }
        }
        tree.setChildren(treeList);
        return tree;
    }
 
    /*
     * @version V1.0
     * Title: getRootNode
     * @author LiuYanQiang
     * @description 獲取全部根節(jié)點
     * @createTime  2022/5/3 0:18
     * @param [list]
     * @return java.util.List<com.lyq.generateTree.Tree>*/
    private List<Tree> getRootNode(List<Tree> list) {
        List<Tree> rootList = new ArrayList<>();
        for (Tree tree : list) {
            if (tree.getP_id().equals("0")) {
                rootList.add(tree);
            }
        }
        return rootList;
    }
}

最后返回情況如下

到此這篇關(guān)于Java實現(xiàn)樹形結(jié)構(gòu)的示例代碼的文章就介紹到這了,更多相關(guān)Java樹形結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot Swagger2 接口規(guī)范示例詳解

    SpringBoot Swagger2 接口規(guī)范示例詳解

    Swagger(在谷歌、IBM、微軟等公司的支持下)做了一個公共的文檔風(fēng)格來填補上述問題,在本文中,我們將會學(xué)習(xí)怎么使用Swagger的 Swagger2注解去生成REST API文檔,感興趣的朋友一起看看吧
    2023-12-12
  • Java手寫持久層框架的詳細代碼

    Java手寫持久層框架的詳細代碼

    這篇文章主要介紹了Java手寫持久層框架,本文適合有一定java基礎(chǔ)的同學(xué),通過自定義持久層框架,可以更加清楚常用的mybatis等開源框架的原理,需要的朋友可以參考下
    2022-08-08
  • SpringBoot自定義工具類實現(xiàn)Excel數(shù)據(jù)存入MySQL數(shù)據(jù)庫

    SpringBoot自定義工具類實現(xiàn)Excel數(shù)據(jù)存入MySQL數(shù)據(jù)庫

    這篇文章主要為大家詳細介紹了如何使用EasyExcel讀取Excel內(nèi)數(shù)據(jù)并轉(zhuǎn)換為csv格式數(shù)據(jù),然后實現(xiàn)字符串分割,分割出屬性名和屬性值建表插入MySQL數(shù)據(jù)庫中,感興趣的可以了解下
    2024-03-03
  • Springboot使用@Cacheable注解實現(xiàn)數(shù)據(jù)緩存

    Springboot使用@Cacheable注解實現(xiàn)數(shù)據(jù)緩存

    本文介紹如何在Springboot中通過@Cacheable注解實現(xiàn)數(shù)據(jù)緩存,在每次調(diào)用添加了@Cacheable注解的方法時,Spring 會檢查指定參數(shù)的指定目標方法是否已經(jīng)被調(diào)用過,文中有詳細的代碼示例,需要的朋友可以參考下
    2023-10-10
  • JAVA簡單分組的算法實現(xiàn)

    JAVA簡單分組的算法實現(xiàn)

    本文介紹了“JAVA簡單分組的算法實現(xiàn)”,需要的朋友可以參考一下
    2013-03-03
  • JavaCV與FFmpeg音視頻流處理技巧總結(jié)大全

    JavaCV與FFmpeg音視頻流處理技巧總結(jié)大全

    JavaCV是一個開源的Java接口,它為幾個著名的計算機視覺庫(如OpenCV、FFmpeg)提供了Java封裝,這篇文章主要給大家介紹了關(guān)于JavaCV與FFmpeg音視頻流處理技巧總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • 深入理解Java設(shè)計模式之裝飾模式

    深入理解Java設(shè)計模式之裝飾模式

    這篇文章主要介紹了JAVA設(shè)計模式之裝飾模式的的相關(guān)資料,文中示例代碼非常詳細,供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2021-11-11
  • Java 基礎(chǔ)語法

    Java 基礎(chǔ)語法

    這篇文章主要介紹了Java 基礎(chǔ)語法,Java 是一門面向?qū)ο蟮慕忉屝途幊陶Z言,面向?qū)ο?意味著我們應(yīng)該把一個 Java 程序看作一系列對象的集合,我們的工作就是構(gòu)建這些對象,并通過調(diào)用彼此的方法來讓各種對象協(xié)同工作,解決實際的問題,下面文章內(nèi)容需要的朋友可以參考下一
    2021-11-11
  • gradle和maven有哪些區(qū)別

    gradle和maven有哪些區(qū)別

    這篇文章主要介紹了gradle和maven有哪些區(qū)別,幫助大家更好的理解和選擇java程序的構(gòu)建工具,感興趣的朋友可以了解下
    2021-01-01
  • Java的枚舉類型使用方法詳解

    Java的枚舉類型使用方法詳解

    這篇文章主要介紹了Java的枚舉類型使用方法詳解,從背景、到定義、特點、使用方式做個簡單了解,感興趣的小伙伴們可以參考一下
    2016-01-01

最新評論