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

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

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

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

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

實現(xiàn)過程

注:也可以使用sql達到該目的,但此處數(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é)構
    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ù)拼樹

遞歸方法構建樹

/**
* 使用遞歸方法建樹
* @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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • javap命令的使用技巧

    javap命令的使用技巧

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

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

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

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

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

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

    在使用IDEA編譯項目時,可能會遇到JDK版本不一致的錯誤,這篇文章主要介紹了解決IDEA報錯java無效的目標發(fā)行版:22的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    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種方法

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

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

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

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

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

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

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

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

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

最新評論

大竹县| 西安市| 阿克陶县| 扶余县| 永宁县| 永城市| 祁阳县| 叶城县| 麻城市| 永安市| 仲巴县| 长顺县| 抚远县| 合江县| 旺苍县| 乌鲁木齐县| 佳木斯市| 宜兴市| 巴林左旗| 宣恩县| 南通市| 长丰县| 东莞市| 云梦县| 灵台县| 屏边| 德钦县| 聂拉木县| 义乌市| 遂平县| 罗城| 鄢陵县| 高台县| 黑山县| 顺平县| 东莞市| 图片| 启东市| 绵竹市| 曲靖市| 老河口市|