Java遞歸以及根據(jù)節(jié)點(diǎn)取子集合方式
Java遞歸以及根據(jù)節(jié)點(diǎn)取子集合
1.示例
//遞歸樹(shù)形
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í)部門(mén)id等于父節(jié)點(diǎn)部門(mén)id做聯(lián)系形成樹(shù)形結(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è)用來(lái)接收子節(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)文章
java并發(fā)學(xué)習(xí)之BlockingQueue實(shí)現(xiàn)生產(chǎn)者消費(fèi)者詳解
這篇文章主要介紹了java并發(fā)學(xué)習(xí)之BlockingQueue實(shí)現(xiàn)生產(chǎn)者消費(fèi)者詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
MyBatisPlus靜態(tài)工具Db的實(shí)現(xiàn)方法
Db是MyBatis-Plus3.5.4+提供的靜態(tài)工具類(lèi),無(wú)需注入Service或Mapper,直接通過(guò)靜態(tài)方法操作數(shù)據(jù)庫(kù),本文就來(lái)詳細(xì)的介紹一下MyBatisPlus靜態(tài)工具Db的實(shí)現(xiàn),感興趣的可以了解一下2026-03-03
輕松理解Java面試和開(kāi)發(fā)中的IoC(控制反轉(zhuǎn))
在Java開(kāi)發(fā)中,IoC意 味著將你設(shè)計(jì)好的類(lèi)交給系統(tǒng)去控制,而不是在你的類(lèi)內(nèi)部控制。這稱(chēng)為控制反轉(zhuǎn)。下文給大家介紹Java面試和開(kāi)發(fā)中的IoC(控制反轉(zhuǎn))知識(shí),需要的朋友參考下吧2017-07-07
java簡(jiǎn)單實(shí)現(xiàn)用語(yǔ)音讀txt文檔方法總結(jié)
在本篇文章里小編給大家整理了關(guān)于java簡(jiǎn)單實(shí)現(xiàn)用語(yǔ)音讀txt文檔的詳細(xì)方法總結(jié),有需要的朋友們參考下。2019-06-06
java讀取文件:char的ASCII碼值=65279,顯示是一個(gè)空字符的解決
這篇文章主要介紹了java讀取文件:char的ASCII碼值=65279,顯示是一個(gè)空字符的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08

