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

Java如何處理數(shù)據(jù)成為樹狀結(jié)構(gòu)

 更新時間:2024年07月25日 16:57:13   作者:騎豬撞地球QAQ  
這篇文章主要介紹了Java如何處理數(shù)據(jù)成為樹狀結(jié)構(gòu)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Java處理數(shù)據(jù)成為樹狀結(jié)構(gòu)

如題所示,項目中需要將部分?jǐn)?shù)據(jù)處理成為樹狀結(jié)構(gòu)

實現(xiàn)過程

注:也可以使用sql達(dá)到該目的,但此處數(shù)據(jù)不多,故在代碼中處理,主要是sql處理不是很會

	// 獲取需要封裝的數(shù)據(jù)
	List<Data> dataAll = service.findAll();
    if (CollUtil.isEmpty(dataAll)) {
      return new ArrayList<>();
    }
    // 獲取頂層目錄 項目中上級編碼為空則為一級目錄
    List<Data> parentList = dataAll.stream()
        .filter(item -> ObjectUtil.isEmpty(item.getParentNumber())).collect(Collectors.toList());

    // 獲取下級目錄,上級編碼不為空則非一級目錄
    List<Data> childList = dataAll.stream()
        .filter(item -> ObjectUtil.isNotEmpty(item.getParentNumber())).collect(Collectors.toList());

    // 封裝樹狀結(jié)構(gòu)
    return parentList.stream().map(item1 -> {
      Data chapterVo = new Data();
      BeanUtils.copyProperties(item1, chapterVo);
      List<Data> videoVoList = childList.stream()
          .filter(item2 -> item1.getBackgroundManagementCategoryNumber().equals(item2.getParentNumber()))
          .map(item3 -> {
            Data videoVo = new Data();
            BeanUtils.copyProperties(item3, videoVo);
            return videoVo;
          })
		  .collect(Collectors.toList());
      chapterVo.setChildren(videoVoList);
      return chapterVo;
    }).collect(Collectors.toList());

Java將查出來的數(shù)據(jù)拼樹

遞歸方法構(gòu)建樹

/**
* 使用遞歸方法建樹
* @param  menuTrees  子節(jié)點集合 / 返回的數(shù)據(jù)
* @return  List 
*/
public static List<Dept> buildByRecursive(List<Dept> menuTrees) {
    List<Dept> trees = new ArrayList<>();
    for (Dept menuTree : menuTrees) {
    	//查找根節(jié)點
        if (menuTree.getPcode() == null) {
         trees.add(findChildren(menuTree,menuTrees));
         }
    }
    return trees;
}
/**
 * 遞歸查找子節(jié)點
 * @param menuTree  菜單數(shù)對象
 * @param menuTrees  子節(jié)點
 * @return MenuTree
 */
private static Dept findChildren(Dept menuTree,List<Dept> menuTrees){
    for (Dept it : menuTrees) {
        if(menuTree.getCode().equals(it.getPcode())) {
            if (menuTree.getChildren() == null) {
             menuTree.setChildren(new ArrayList<>());
            }
            menuTree.getChildren().add(findChildren(it,menuTrees));
        }
    }
    return menuTree;
}

總結(jié)

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

相關(guān)文章

  • javap命令的使用技巧

    javap命令的使用技巧

    本篇文章給大家分享了關(guān)于JAVA中關(guān)于javap命令的使用技巧以及相關(guān)代碼分享,有需要的朋友參考學(xué)習(xí)下。
    2018-05-05
  • 關(guān)于Java大整數(shù)運算之BigInteger類

    關(guān)于Java大整數(shù)運算之BigInteger類

    這篇文章主要介紹了關(guān)于Java大整數(shù)運算之BigInteger類,BigInteger提供高精度整型數(shù)據(jù)類型及相關(guān)操作,所有操作中,都以二進(jìn)制補碼形式表示,需要的朋友可以參考下
    2023-05-05
  • Java數(shù)字簽名算法DSA實例詳解

    Java數(shù)字簽名算法DSA實例詳解

    這篇文章主要介紹了Java數(shù)字簽名算法DSA,結(jié)合實例形式分析了Java數(shù)字簽名算法DSA具體定義與使用技巧,需要的朋友可以參考下
    2018-05-05
  • 解決IDEA報錯java無效的目標(biāo)發(fā)行版:22

    解決IDEA報錯java無效的目標(biāo)發(fā)行版:22

    在使用IDEA編譯項目時,可能會遇到JDK版本不一致的錯誤,這篇文章主要介紹了解決IDEA報錯java無效的目標(biāo)發(fā)行版:22的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • springboot啟動feign項目報錯:Service id not legal hostnam的解決

    springboot啟動feign項目報錯:Service id not legal hostnam的解決

    這篇文章主要介紹了springboot啟動feign項目報錯:Service id not legal hostnam的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 遞歸之斐波那契數(shù)列java的3種方法

    遞歸之斐波那契數(shù)列java的3種方法

    這篇文章主要為大家詳細(xì)介紹了遞歸之斐波那契數(shù)列java的3種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Java IO三大模型(BIO/NIO/AIO)的使用總結(jié)

    Java IO三大模型(BIO/NIO/AIO)的使用總結(jié)

    相信很多Java開發(fā)剛接觸IO模型時,都會被「BIO、NIO、AIO」「同步、異步、阻塞、非阻塞」這些概念繞暈,下面就來詳細(xì)的介紹一下 IO三大模型的使用,感興趣的可以了解一下
    2026-02-02
  • SpringBoot如何IDEA中實現(xiàn)熱部署

    SpringBoot如何IDEA中實現(xiàn)熱部署

    這篇文章主要介紹了SpringBoot如何IDEA中實現(xiàn)熱部署,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • SpringMVC?bean加載控制的實現(xiàn)分析

    SpringMVC?bean加載控制的實現(xiàn)分析

    SpringMVC是一種基于Java,實現(xiàn)了Web?MVC設(shè)計模式,請求驅(qū)動類型的輕量級Web框架,即使用了MVC架構(gòu)模式的思想,將Web層進(jìn)行職責(zé)解耦。基于請求驅(qū)動指的就是使用請求-響應(yīng)模型,框架的目的就是幫助我們簡化開發(fā),SpringMVC也是要簡化我們?nèi)粘eb開發(fā)
    2023-02-02
  • Java創(chuàng)建對象(顯式創(chuàng)建和隱含創(chuàng)建)

    Java創(chuàng)建對象(顯式創(chuàng)建和隱含創(chuàng)建)

    本文詳細(xì)介紹對象的創(chuàng)建,在 Java 語言中創(chuàng)建對象分顯式創(chuàng)建與隱含創(chuàng)建兩種情況,顯式創(chuàng)建和隱含創(chuàng)建,,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09

最新評論

蕉岭县| 溆浦县| 阳山县| 巴马| 怀安县| 全南县| 泉州市| 克什克腾旗| 龙门县| 东台市| 轮台县| 乾安县| 呼和浩特市| 罗山县| 岳普湖县| 阿拉善右旗| 集安市| 大新县| 汉川市| 靖远县| 香港 | 汝南县| 麻江县| 木兰县| 垣曲县| 昆明市| 绥滨县| 仁怀市| 郧西县| 华宁县| 黄大仙区| 咸阳市| 新闻| 尼勒克县| 涿州市| 湖北省| 策勒县| 磐石市| 新余市| 绥中县| 浮山县|