java递归输出树形菜单 Java递归怎样正确输出树形菜单

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

java递归输出树形菜单 Java递归怎样正确输出树形菜单

Joker_Ye   2021-03-24 我要评论
想了解Java递归怎样正确输出树形菜单的相关内容吗,Joker_Ye在本文为您仔细讲解java递归输出树形菜单的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:java,递归,树形菜单,下面大家一起来学习吧。

首先我们要建立树节点的类:

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()); 
 } 
} 

输出的结果:

<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> 

浏览器效果:

猜您喜欢

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们