java遞歸生成樹型結(jié)構(gòu)方式
java遞歸生成樹
1.獲取數(shù)據(jù)
public List<TreeClassifyRespVO> getTreeClassifyList(ClassifyPageReqVO reqVO) {
List<ClassifyDO> classifyList = classifyMapper.selectList(reqVO);
List<TreeClassifyRespVO> childClassifyResp = ClassifyConvert.INSTANCE.convertList01(classifyList);
return getClassifyTree(childClassifyResp);
}2.生成樹形結(jié)構(gòu)
public List<TreeClassifyRespVO> getClassifyTree(List<TreeClassifyRespVO> childClassifyResp) {
// 返回的樹形數(shù)據(jù)
List<TreeClassifyRespVO> tree = new ArrayList<TreeClassifyRespVO>();
// 第一次遍歷
for (TreeClassifyRespVO treeClassify : childClassifyResp) {
// 找到根節(jié)點(diǎn),這里我的根節(jié)點(diǎn)的pid為0
if (treeClassify.getPid()==0) {
tree.add(findChild(treeClassify, childClassifyResp));
}
}
return tree;
}3.查詢子節(jié)點(diǎn)
private TreeClassifyRespVO findChild(TreeClassifyRespVO treeClassify, List<TreeClassifyRespVO> list) {
// 定義list用于存儲(chǔ)子節(jié)點(diǎn)
List<TreeClassifyRespVO> children = new ArrayList<TreeClassifyRespVO>();
for (TreeClassifyRespVO node : list) {
// 找到根節(jié)點(diǎn),這里我的根節(jié)點(diǎn)的pid為0
if (node.getPid().equals(treeClassify.getId())) {
// 調(diào)用遞歸
children.add(findChild(node, list));
}
}
treeClassify.setChildren(children);
return treeClassify;
}4.效果

總結(jié)以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql數(shù)據(jù)庫忘記密碼時(shí)如何修改
本文主要介紹了mysql數(shù)據(jù)庫忘記密碼時(shí)如何修改的步驟方法,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02
如何利用SpringAOP的返回通知處理數(shù)據(jù)加密返回
這篇文章主要介紹了如何利用SpringAOP的返回通知處理數(shù)據(jù)加密返回,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-12-12
史上最簡(jiǎn)單的MyBatis動(dòng)態(tài)SQL入門示例代碼
動(dòng)態(tài)sql,可以根據(jù)用戶對(duì)字段選擇和輸入,動(dòng)態(tài)生成一條sql執(zhí)行。接下來通過本文給大家分享MyBatis動(dòng)態(tài)SQL入門示例代碼,一起看看吧2017-03-03
SpringBoot整合DeepSeek實(shí)現(xiàn)AI對(duì)話功能
本文介紹了如何在SpringBoot項(xiàng)目中整合DeepSeek API和本地私有化部署DeepSeekR1模型,通過SpringAI框架簡(jiǎn)化了人工智能模型的集成,感興趣的小伙伴跟著小編一起來看看吧2025-02-02
SpringBoot2零基礎(chǔ)到精通之?dāng)?shù)據(jù)庫專項(xiàng)精講
SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時(shí)也是簡(jiǎn)化Spring的一種快速開發(fā)的腳手架,本篇我們來學(xué)習(xí)如何連接數(shù)據(jù)庫進(jìn)行操作2022-03-03
java騰訊AI人臉對(duì)比對(duì)接代碼實(shí)例
這篇文章主要介紹了java騰訊AI人臉對(duì)比對(duì)接,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
使用VS?Code進(jìn)行java開發(fā)與調(diào)試的圖文教程
這篇文章主要介紹了如何在計(jì)算機(jī)上安裝JDK、VSCode以及Java擴(kuò)展包,并詳細(xì)說明了配置Java運(yùn)行環(huán)境的過程,還展示了如何在VSCode中新建一個(gè)Java項(xiàng)目,需要的朋友可以參考下2025-02-02
java關(guān)于String.split("|")的使用方式
這篇文章主要介紹了java關(guān)于String.split("|")的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02

