使用Java將一個List運用遞歸轉成樹形結構案例
更新時間:2021年06月30日 15:53:18 作者:嚴老板的博客
這篇文章主要介紹了使用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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot如何統(tǒng)一處理返回結果和異常情況
這篇文章主要介紹了SpringBoot如何統(tǒng)一處理返回結果和異常情況問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05java中java.util.Date和java.sql.Date之間的轉換的示例
java.util.Date是java.sql.Date的父類,有時候在和SqlServer數據庫打交道時,也會遇到,本文主要介紹了java中java.util.Date和java.sql.Date之間的轉換的示例,具有一定的參考價值,感興趣的可以了解一下2024-05-05Spring mvc工作原理_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了Spring mvc工作原理的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08