使用Java將一個List運用遞歸轉成樹形結構案例
在開發(fā)中,我們會遇到將不同組織架構合并成tree這種樹狀結構,那么如果做呢?
實際上,我們也可以理解為如何將擁有父子關系的list轉成樹形結構,而這其中主要的方法就是遞歸!
1、實體對象:
@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、轉換工具類:
public class TreeUtils {
//把一個List轉成樹
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、運行結果:

這樣list就成功轉換成為了tree裝結構
到此這篇關于使用Java將一個List運用遞歸轉成樹形結構案例的文章就介紹到這了,更多相關Java將list運用成樹形結構內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java mysql詳細講解雙數(shù)據(jù)源配置使用
在開發(fā)過程中我們常常會用到兩個數(shù)據(jù)庫,一個數(shù)據(jù)用來實現(xiàn)一些常規(guī)的增刪改查,另外一個數(shù)據(jù)庫用來實時存數(shù)據(jù)。進行數(shù)據(jù)的統(tǒng)計分析??梢宰x寫分離??梢愿玫膬?yōu)化和提高效率;或者兩個數(shù)據(jù)存在業(yè)務分離的時候也需要多個數(shù)據(jù)源來實現(xiàn)2022-06-06
SpringBoot如何統(tǒng)一處理返回結果和異常情況
這篇文章主要介紹了SpringBoot如何統(tǒng)一處理返回結果和異常情況問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
java中java.util.Date和java.sql.Date之間的轉換的示例
java.util.Date是java.sql.Date的父類,有時候在和SqlServer數(shù)據(jù)庫打交道時,也會遇到,本文主要介紹了java中java.util.Date和java.sql.Date之間的轉換的示例,具有一定的參考價值,感興趣的可以了解一下2024-05-05
Spring mvc工作原理_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了Spring mvc工作原理的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
Spring?Boot用戶注冊驗證的實現(xiàn)全過程記錄
最近在設計自己的博客系統(tǒng),涉及到用戶注冊與登錄驗證,所以下面這篇文章主要給大家介紹了關于Spring?Boot用戶注冊驗證的實現(xiàn)全過程,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-01-01

