Java遞歸以及根據(jù)節(jié)點(diǎn)取子集合方式
Java遞歸以及根據(jù)節(jié)點(diǎn)取子集合
1.示例
//遞歸樹形 private List<DeptVO> getDeptTree(List<DeptVO> childList, List<DeptVO> parentList) { for (DeptVO p : parentList) { List<DeptVO> twoLevelMenuTree = childList.stream() .filter(s -> Objects.equals(s.getUpDeptId(), p.getDeptId())) .collect(Collectors.toList()); if (twoLevelMenuTree.size() > 0) { p.setChildren(twoLevelMenuTree); getDeptTree(childList, twoLevelMenuTree); } } return parentList; }
2.遞歸參數(shù)解釋
以上childList為所有數(shù)據(jù)的集合,parentList為最高節(jié)點(diǎn)的數(shù)據(jù),這里是根據(jù)子節(jié)點(diǎn)的上級(jí)部門id等于父節(jié)點(diǎn)部門id做聯(lián)系形成樹形結(jié)構(gòu)。
3.反向遞歸(取到子節(jié)點(diǎn)的所有子節(jié)點(diǎn))
public void getChildrenByTree(DeptVO result, List<DeptVO> children, String deptId) { if (result == null) { return; } if (result.getDeptId().equals(deptId)) { if (result.getChildren() != null) { children.addAll(result.getChildren()); return; } } if (result.getChildren() != null) { for (DeptVO child : result.getChildren()) { getChildrenByTree(child, children, deptId); } } }
4.反向遞歸參數(shù)解釋
result是頂級(jí)父節(jié)點(diǎn)的數(shù)據(jù)(包含所有子節(jié)點(diǎn)),children是一個(gè)用來接收子節(jié)點(diǎn)數(shù)據(jù)的集合,使用時(shí)創(chuàng)建一個(gè)空的list傳進(jìn)方法即可,deptId即為需要查找所有子節(jié)點(diǎn)的父節(jié)點(diǎn)的id。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot項(xiàng)目idea熱部署的教程詳解
這篇文章主要介紹了springboot項(xiàng)目idea熱部署,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08java 中HashMap、HashSet、TreeMap、TreeSet判斷元素相同的幾種方法比較
這篇文章主要介紹了從源碼的角度淺析HashMap、TreeMap元素的存儲(chǔ)和獲取元素的邏輯;從Map與Set之間的關(guān)系淺析常用的Set中元素的存儲(chǔ)和判斷是否重復(fù)的邏輯,需要的朋友可以參考下2017-01-01使用IDEA工具配置和運(yùn)行vue項(xiàng)目及遇到的坑
這篇文章主要介紹了使用IDEA工具配置和運(yùn)行vue項(xiàng)目及遇到的坑,需要的朋友可以參考下2018-09-09Springcloud RestTemplate服務(wù)調(diào)用代碼實(shí)例
這篇文章主要介紹了Springcloud RestTemplate服務(wù)調(diào)用代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08Java編程Webservice指定超時(shí)時(shí)間代碼詳解
這篇文章主要介紹了Java編程Webservice指定超時(shí)時(shí)間代碼詳解,簡單介紹了webservice,然后分享了通過使用JDK對Webservice的支持進(jìn)行Webservice調(diào)用實(shí)現(xiàn)指定超時(shí)時(shí)間完整示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-11-11Java中循環(huán)冗余校驗(yàn)(CRC32)的實(shí)現(xiàn)
CRC校驗(yàn)實(shí)用程序庫在數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)通訊領(lǐng)域,為了保證數(shù)據(jù)的正確,就不得不采用檢錯(cuò)的手段,下面這篇文章主要給大家介紹了關(guān)于Java中循環(huán)冗余校驗(yàn)(CRC32)實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-10-10SpringBoot整合kaptcha實(shí)現(xiàn)圖片驗(yàn)證碼功能
這篇文章主要介紹了SpringBoot整合kaptcha實(shí)現(xiàn)圖片驗(yàn)證碼功能,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07SpringBoot的配置文件application.yml及加載順序詳解
這篇文章主要介紹了SpringBoot的配置文件application.yml及加載順序,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Java使用flyway實(shí)現(xiàn)腳本自動(dòng)化的方法詳解
Flyway是一個(gè)開源的數(shù)據(jù)庫版本控制工具,主要用于管理數(shù)據(jù)庫的版本和變更,它可以自動(dòng)化地將數(shù)據(jù)庫遷移到不同的版本,同時(shí)支持多種數(shù)據(jù)庫類型,本文給大家介紹了如何使用flyway實(shí)現(xiàn)腳本自動(dòng)化,需要的朋友可以參考下2023-10-10