使用Java將一個(gè)List運(yùn)用遞歸轉(zhuǎn)成樹形結(jié)構(gòu)案例
在開發(fā)中,我們會(huì)遇到將不同組織架構(gòu)合并成tree這種樹狀結(jié)構(gòu),那么如果做呢?
實(shí)際上,我們也可以理解為如何將擁有父子關(guān)系的list轉(zhuǎn)成樹形結(jié)構(gòu),而這其中主要的方法就是遞歸!
1、實(shí)體對象:
@Data
public class Node {
private Integer id;
private String city;
private Integer pid;
private List<Node> children;
public Node(Integer id,String city,Integer pid){
this.id = id;
this.city = city;
this.pid = pid;
}
}
2、轉(zhuǎn)換工具類:
public class TreeUtils {
//把一個(gè)List轉(zhuǎn)成樹
static List<Node> buildTree(List<Node> list,Integer pid){
List<Node> tree=new ArrayList<>();
for(Node node:list){
if(Objects.equals(node.getPid(),pid)){
tree.add(findChild(node,list));
}
}
return tree;
}
static Node findChild(Node node, List<Node> list){
for(Node n:list){
if(Objects.equals(n.getPid(),node.getId())){
if(node.getChildren() == null){
node.setChildren(new ArrayList<Node>());
}
node.getChildren().add(findChild(n,list));
}
}
return node;
}
public static void main(String[] args) {
Node node0=new Node(0,"中國",-1);
Node node1=new Node(1,"湖北省",0);
Node node2=new Node(2,"武漢市",1);
Node node3=new Node(3,"洪山區(qū)",2);
Node node4=new Node(4,"宜昌市",1);
Node node5=new Node(5,"上海市",0);
Node node6=new Node(6,"靜安區(qū)",5);
List<Node> list=new ArrayList<>();
list.add(node3);
list.add(node4);
list.add(node1);
list.add(node2);
list.add(node5);
list.add(node6);
list.add(node0);
List<Node> nodes = buildTree(list,-1);
System.out.println(JSON.toJSONString(nodes));
}
}
3、運(yùn)行結(jié)果:

這樣list就成功轉(zhuǎn)換成為了tree裝結(jié)構(gòu)
到此這篇關(guān)于使用Java將一個(gè)List運(yùn)用遞歸轉(zhuǎn)成樹形結(jié)構(gòu)案例的文章就介紹到這了,更多相關(guān)Java將list運(yùn)用成樹形結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解Java遞歸實(shí)現(xiàn)樹形結(jié)構(gòu)的兩種方式
- Java實(shí)現(xiàn)List集合轉(zhuǎn)樹形結(jié)構(gòu)的示例詳解
- Java實(shí)現(xiàn)樹形結(jié)構(gòu)的示例代碼
- Java樹形結(jié)構(gòu)數(shù)據(jù)生成導(dǎo)出excel文件方法記錄
- JAVA如何把數(shù)據(jù)庫的數(shù)據(jù)處理成樹形結(jié)構(gòu)
- Java 遞歸查詢部門樹形結(jié)構(gòu)數(shù)據(jù)的實(shí)踐
- java+vue3+el-tree實(shí)現(xiàn)樹形結(jié)構(gòu)操作代碼
相關(guān)文章
SpringWebMVC的常用注解及應(yīng)用分層架構(gòu)詳解
這篇文章主要介紹了SpringWebMVC的常用注解及應(yīng)用分層架構(gòu),SpringWebMVC是基于ServletAPI構(gòu)建的原始Web框架,從?開始就包含在Spring框架中,感興趣的朋友可以參考下2024-05-05
Hadoop MultipleOutputs輸出到多個(gè)文件中的實(shí)現(xiàn)方法
這篇文章主要介紹了 Hadoop MultipleOutputs輸出到多個(gè)文件中的實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-10-10
Java?如何通過注解實(shí)現(xiàn)接口輸出時(shí)數(shù)據(jù)脫敏
這篇文章主要介紹了Java?如何通過注解實(shí)現(xiàn)接口輸出時(shí)數(shù)據(jù)脫敏,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
SpringBoot中實(shí)現(xiàn)Redis?Stream隊(duì)列的代碼實(shí)例
本文介紹了如何在Spring?Boot中使用Redis?Stream隊(duì)列進(jìn)行消息的生產(chǎn)和消費(fèi),涉及到的主要內(nèi)容包括添加Redis依賴、配置RedisTemplate、創(chuàng)建生產(chǎn)者和消費(fèi)者監(jiān)聽器等,需要的朋友可以參考下2024-09-09
JAVA實(shí)現(xiàn)簡單停車場系統(tǒng)代碼
JAVA項(xiàng)目中正號需要一個(gè)停車收費(fèi)系統(tǒng),就整理出來java實(shí)現(xiàn)的一個(gè)簡單的停車收費(fèi)系統(tǒng)給大家分享一下,希望對大家有所幫助2017-04-04

