最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java樹形結(jié)構(gòu)遞歸查詢方式

 更新時(shí)間:2024年12月17日 10:32:23   作者:冷冷清清中的風(fēng)風(fēng)火火  
文章介紹了Java中實(shí)現(xiàn)樹形結(jié)構(gòu)遞歸查詢的方法,首先找出所有的根節(jié)點(diǎn),然后通過循環(huán)遍歷根節(jié)點(diǎn),找到每個(gè)根節(jié)點(diǎn)的子節(jié)點(diǎn),最終構(gòu)建完整的樹形結(jié)構(gòu),這是一種有效的遞歸查詢思路,適用于需要層次化展示數(shù)據(jù)的場(chǎng)景

Java樹形結(jié)構(gòu)遞歸查詢

思路

先找到所有的根節(jié)點(diǎn),再通過循環(huán)遍歷所有的根節(jié)點(diǎn),找到每個(gè)跟節(jié)點(diǎn)的子節(jié)點(diǎn),最終形成一個(gè)樹形結(jié)構(gòu)

    /**
     * 構(gòu)建樹形結(jié)構(gòu)數(shù)據(jù)new
     * @param org
     * @return
     */
    public List<OrgEntity> builTree(OrgEntity org){
        List<OrgEntity> treeMenus =new ArrayList<>();
		// 查詢所有數(shù)據(jù)
        List<OrgEntity> reList = this.queryListByOrg(org);
		// 獲取根節(jié)點(diǎn)數(shù)據(jù)
        List<OrgEntity> rootList = this.getRootNode(reList);
        for(OrgEntity node : rootList){
		    // 為根節(jié)點(diǎn)數(shù)據(jù)遞歸添加字點(diǎn)數(shù)據(jù)
            node=buildChilTree(node,reList);
            treeMenus.add(node);
        }
        return treeMenus;
    }
    /**
     * 獲取根節(jié)點(diǎn)new
     * @param list
     * @return
     */
    public List<OrgEntity> getRootNode(List<OrgEntity> list){
        List<OrgEntity> rootMenuLists =new ArrayList
		// 遍歷list,獲取根節(jié)點(diǎn)數(shù)據(jù)
        for(OrgEntity menuNode : list) {
            boolean isExit = false;
            for(OrgEntity node : list){
                if(menuNode.getParentId() != null && menuNode.getParentId().equals(node.getId())){
                    isExit = true;
                    break;
                }
            }
			// 如果遍歷該數(shù)據(jù)沒有上級(jí)節(jié)點(diǎn),就放到根節(jié)點(diǎn)list中,否則就不放
            if(!isExit){
                rootMenuLists.add(menuNode);
            }
        }
        return rootMenuLists;
    }
    //遞歸,建立子樹形結(jié)構(gòu)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;
    }

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringCloud Zuul服務(wù)功能與使用方法解析

    SpringCloud Zuul服務(wù)功能與使用方法解析

    這篇文章主要介紹了SpringCloud Zuul服務(wù)功能與使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java排序算法中的選擇排序算法實(shí)現(xiàn)

    Java排序算法中的選擇排序算法實(shí)現(xiàn)

    這篇文章主要介紹了Java排序算法中的選擇排序算法實(shí)現(xiàn),選擇排序算法的實(shí)現(xiàn)思路類似插入排序,分已排序區(qū)間和未排序區(qū)間,選擇排序每次會(huì)從未排序區(qū)間中找到最小(大)的元素,將其放到已排序區(qū)間的末尾,需要的朋友可以參考下
    2023-12-12
  • Springboot項(xiàng)目Mybatis升級(jí)為Mybatis-Plus的詳細(xì)步驟

    Springboot項(xiàng)目Mybatis升級(jí)為Mybatis-Plus的詳細(xì)步驟

    在許多 Java 項(xiàng)目中,MyBatis 是一個(gè)廣泛使用的 ORM 框架,然而,隨著 MyBatis-Plus 的出現(xiàn),許多開發(fā)者開始遷移到這個(gè)更加簡(jiǎn)潔、高效的工具,它在 MyBatis 的基礎(chǔ)上提供了更多的功能,所以本文將介紹Springboot項(xiàng)目Mybatis升級(jí)為Mybatis-Plus的詳細(xì)步驟
    2025-03-03
  • springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼

    springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼

    Easy-Es是一款基于ElasticSearch官方提供的RestHighLevelClient打造的低碼開發(fā)框架,本文主要介紹了springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Java源碼解析阻塞隊(duì)列ArrayBlockingQueue常用方法

    Java源碼解析阻塞隊(duì)列ArrayBlockingQueue常用方法

    今天小編就為大家分享一篇關(guān)于Java源碼解析阻塞隊(duì)列ArrayBlockingQueue常用方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Spring?boot?security權(quán)限管理集成cas單點(diǎn)登錄功能的實(shí)現(xiàn)

    Spring?boot?security權(quán)限管理集成cas單點(diǎn)登錄功能的實(shí)現(xiàn)

    這篇文章主要介紹了Spring?boot?security權(quán)限管理集成cas單點(diǎn)登錄,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Java判斷字符串是否在List中的方案詳解(忽略大小寫)

    Java判斷字符串是否在List中的方案詳解(忽略大小寫)

    對(duì)于需要頻繁調(diào)用且數(shù)據(jù)量大的情況,有幾種優(yōu)化方案可以選擇,下面給大家分享三種方案給大家詳細(xì)介紹java字符串判斷是否在list中,感興趣的朋友一起看看吧
    2025-05-05
  • java中List接口的方法詳解

    java中List接口的方法詳解

    這篇文章主要介紹了java中List接口的方法詳解,List接口是繼承Collection接口,所以Collection集合中有的方法,List集合也繼承過來,本文主要介紹一下list下的方法,需要的朋友可以參考下
    2023-10-10
  • Java與Http協(xié)議的詳細(xì)介紹

    Java與Http協(xié)議的詳細(xì)介紹

    這篇文章主要介紹了Java與Http協(xié)議的詳細(xì)介紹的相關(guān)資料,這里提供實(shí)例來幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • 詳談jpa中表的@OneToMany等關(guān)聯(lián)關(guān)系

    詳談jpa中表的@OneToMany等關(guān)聯(lián)關(guān)系

    這篇文章主要介紹了詳談jpa中表的@OneToMany等關(guān)聯(lián)關(guān)系,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論

武乡县| 九寨沟县| 安西县| 海盐县| 铜山县| 嘉禾县| 河西区| 龙里县| 固阳县| 桐乡市| 株洲县| 南川市| 嵩明县| 西丰县| 孝义市| 玉屏| 东海县| 阜南县| 商城县| 德格县| 南漳县| 双牌县| 绥棱县| 伊通| 温泉县| 平顶山市| 酒泉市| 扎鲁特旗| 洱源县| 古浪县| 射洪县| 大余县| 灵璧县| 巴南区| 琼海市| 巍山| 林州市| 乌兰浩特市| 山丹县| 静安区| 醴陵市|