Java遞歸以及根據(jù)節(jié)點取子集合方式
Java遞歸以及根據(jù)節(jié)點取子集合
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é)點的數(shù)據(jù),這里是根據(jù)子節(jié)點的上級部門id等于父節(jié)點部門id做聯(lián)系形成樹形結(jié)構(gòu)。
3.反向遞歸(取到子節(jié)點的所有子節(jié)點)
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是頂級父節(jié)點的數(shù)據(jù)(包含所有子節(jié)點),children是一個用來接收子節(jié)點數(shù)據(jù)的集合,使用時創(chuàng)建一個空的list傳進方法即可,deptId即為需要查找所有子節(jié)點的父節(jié)點的id。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java 中HashMap、HashSet、TreeMap、TreeSet判斷元素相同的幾種方法比較
這篇文章主要介紹了從源碼的角度淺析HashMap、TreeMap元素的存儲和獲取元素的邏輯;從Map與Set之間的關(guān)系淺析常用的Set中元素的存儲和判斷是否重復(fù)的邏輯,需要的朋友可以參考下2017-01-01Springcloud RestTemplate服務(wù)調(diào)用代碼實例
這篇文章主要介紹了Springcloud RestTemplate服務(wù)調(diào)用代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08Java中循環(huán)冗余校驗(CRC32)的實現(xiàn)
CRC校驗實用程序庫在數(shù)據(jù)存儲和數(shù)據(jù)通訊領(lǐng)域,為了保證數(shù)據(jù)的正確,就不得不采用檢錯的手段,下面這篇文章主要給大家介紹了關(guān)于Java中循環(huán)冗余校驗(CRC32)實現(xiàn)的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-10-10SpringBoot整合kaptcha實現(xiàn)圖片驗證碼功能
這篇文章主要介紹了SpringBoot整合kaptcha實現(xiàn)圖片驗證碼功能,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-07-07SpringBoot的配置文件application.yml及加載順序詳解
這篇文章主要介紹了SpringBoot的配置文件application.yml及加載順序,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07Java使用flyway實現(xiàn)腳本自動化的方法詳解
Flyway是一個開源的數(shù)據(jù)庫版本控制工具,主要用于管理數(shù)據(jù)庫的版本和變更,它可以自動化地將數(shù)據(jù)庫遷移到不同的版本,同時支持多種數(shù)據(jù)庫類型,本文給大家介紹了如何使用flyway實現(xiàn)腳本自動化,需要的朋友可以參考下2023-10-10