最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java遞歸如何正確輸出樹形菜單

 更新時間:2020年08月26日 09:01:35   作者:Joker_Ye  
這篇文章主要為大家詳細介紹了Java遞歸如何正確輸出樹形菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java遞歸輸出樹形菜單的具體代碼,供大家參考,具體內(nèi)容如下

首先我們要建立樹節(jié)點的類:

package com.tree; 
 
public class Node { 
 private Integer id; 
 private Integer parentId; 
 private String name; 
 private String link; 
 
 public Integer getId() { 
 return id; 
 } 
 public void setId(Integer id) { 
 this.id = id; 
 } 
 public Integer getParentId() { 
 return parentId; 
 } 
 public void setParentId(Integer parentId) { 
 this.parentId = parentId; 
 } 
 public String getName() { 
 return name; 
 } 
 public void setName(String name) { 
 this.name = name; 
 } 
 public String getLink() { 
 return link; 
 } 
 public void setLink(String link) { 
 this.link = link; 
 } 
} 

輸出樹形菜單類:

package com.tree; 
 
import java.util.ArrayList; 
import java.util.List; 
 
public class Tree { 
 private StringBuffer html = new StringBuffer(); 
 private List<Node> nodes; 
 
 public Tree(List<Node> nodes){ 
 this.nodes = nodes; 
 } 
 
 public String buildTree(){ 
 html.append("<ul>"); 
 for (Node node : nodes) { 
  Integer id = node.getId(); 
  if (node.getParentId() == null) { 
  html.append("\r\n<li id='" + id + "'>" + node.getName()+ "</li>"); 
  build(node); 
  } 
 } 
 html.append("\r\n</ul>"); 
 return html.toString(); 
 } 
 
 private void build(Node node){ 
 List<Node> children = getChildren(node); 
 if (!children.isEmpty()) { 
  html.append("\r\n<ul>"); 
  for (Node child : children) { 
  Integer id = child.getId(); 
  html.append("\r\n<li id='" + id + "'>" + child.getName()+ "</li>"); 
  build(child); 
  } 
  html.append("\r\n</ul>"); 
 } 
 } 
 
 private List<Node> getChildren(Node node){ 
 List<Node> children = new ArrayList<Node>(); 
 Integer id = node.getId(); 
 for (Node child : nodes) { 
  if (id.equals(child.getParentId())) { 
  children.add(child); 
  } 
 } 
 return children; 
 } 
} 

然后我們來測試一下:

import java.util.ArrayList; 
import java.util.List; 
 
import cn.com.tree.Node; 
import cn.com.tree.Tree; 
 
 
public class Test { 
 
 /** 
 * @param args 
 */ 
 public static void main(String[] args) { 
 List<Node> nodes = new ArrayList<Node>(); 
  
 Node node1 = new Node(); 
 node1.setId(1); 
 node1.setName("node1"); 
 node1.setParentId(null); 
 node1.setLink(null); 
 nodes.add(node1); 
  
 Node node11 = new Node(); 
 node11.setId(11); 
 node11.setName("node11"); 
 node11.setParentId(1); 
 node11.setLink(null); 
 nodes.add(node11); 
  
 Node node111 = new Node(); 
 node111.setId(111); 
 node111.setName("node111"); 
 node111.setParentId(11); 
 node111.setLink(null); 
 nodes.add(node111); 
  
 Node node12 = new Node(); 
 node12.setId(12); 
 node12.setName("node12"); 
 node12.setParentId(1); 
 node12.setLink(null); 
 nodes.add(node12); 
  
 Node node2 = new Node(); 
 node2.setId(2); 
 node2.setName("node2"); 
 node2.setParentId(null); 
 node2.setLink(null); 
 nodes.add(node2); 
  
 Node node21 = new Node(); 
 node21.setId(21); 
 node21.setName("node21"); 
 node21.setParentId(2); 
 node21.setLink(null); 
 nodes.add(node21); 
  
 Node node3 = new Node(); 
 node3.setId(3); 
 node3.setName("node3"); 
 node3.setParentId(null); 
 node3.setLink(null); 
 nodes.add(node3); 
  
 Tree tree = new Tree(nodes); 
 System.out.println(tree.buildTree()); 
 } 
} 

輸出的結(jié)果:

<ul> 
<li id='1'>node1</li> 
<ul> 
<li id='11'>node11</li> 
<ul> 
<li id='111'>node111</li> 
</ul> 
<li id='12'>node12</li> 
</ul> 
<li id='2'>node2</li> 
<ul> 
<li id='21'>node21</li> 
</ul> 
<li id='3'>node3</li> 
</ul> 

瀏覽器效果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實戰(zhàn)員工績效管理系統(tǒng)的實現(xiàn)流程

    Java實戰(zhàn)員工績效管理系統(tǒng)的實現(xiàn)流程

    只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+Mysql+Maven+HTML實現(xiàn)一個員工績效管理系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2022-01-01
  • SpringBoot中jar啟動下如何讀取文件路徑

    SpringBoot中jar啟動下如何讀取文件路徑

    這篇文章主要介紹了SpringBoot?jar啟動下如何讀取文件路徑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • CentOS安裝solr 4.10.3詳細教程

    CentOS安裝solr 4.10.3詳細教程

    這篇文章主要為大家詳細介紹了CentOS安裝solr 4.10.3的詳細教程 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Java實現(xiàn)不同的類的屬性之間相互賦值

    Java實現(xiàn)不同的類的屬性之間相互賦值

    今天小編就為大家分享一篇關(guān)于Java實現(xiàn)不同的類的屬性之間相互賦值,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 理解Java垃圾回收

    理解Java垃圾回收

    這篇文章主要幫助大家理解Java垃圾回收,通過實例學(xué)習(xí)java垃圾回收,什么是垃圾回收,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Java與SpringBoot對redis的使用方式

    Java與SpringBoot對redis的使用方式

    這篇文章主要介紹了Java與SpringBoot對redis的使用方式,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • idea如何在service窗口中顯示多個服務(wù)

    idea如何在service窗口中顯示多個服務(wù)

    這篇文章主要介紹了idea如何在service窗口中顯示多個服務(wù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Spring Boot 整合 MyBatis 連接數(shù)據(jù)庫及常見問題

    Spring Boot 整合 MyBatis 連接數(shù)據(jù)庫及常見問題

    MyBatis 是一個優(yōu)秀的持久層框架,支持定制化 SQL、存儲過程以及高級映射,下面詳細介紹如何在 Spring Boot 項目中整合 MyBatis 并連接數(shù)據(jù)庫,感興趣的朋友一起看看吧
    2025-03-03
  • Java虛擬機工作原理

    Java虛擬機工作原理

    本文主要介紹了Java虛擬機的工作原理。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • 詳解SpringBoot如何讓指定的Bean先加載

    詳解SpringBoot如何讓指定的Bean先加載

    這篇文章主要給大家介紹了在 SpringBoot 中如何讓自己的某個指定的 Bean 在其他 Bean 前完成被 Spring 加載,文中通過代碼示例給大家講解的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-06-06

最新評論

海盐县| 运城市| 麻城市| 盱眙县| 合阳县| 山西省| 杭锦旗| 来凤县| 定日县| 涟水县| 承德市| 石景山区| 平远县| 呼玛县| 云霄县| 尼木县| 贵港市| 鄂托克旗| 朝阳县| 淮北市| 阿城市| 台湾省| 华阴市| 青川县| 饶阳县| 福海县| 仁布县| 巩留县| 江北区| 桂阳县| 通海县| 永新县| 确山县| 龙南县| 汉源县| 黄石市| 右玉县| 石阡县| 丹东市| 灵寿县| 丹寨县|