全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java递归如何正确输出树形菜单

本文实例为大家分享了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> 

浏览器效果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# java  # 递归  # 树形菜单  # java利用递归调用实现树形菜单的样式  # java编程两种树形菜单结构的转换代码  # java实现遍历树形菜单两种实现代码分享  # JAVA递归生成树形菜单的实现过程  # 大家分享  # 具体内容  # 大家多多  # 测试一下  # getParentId  # setId  # getName  # setParentId  # getId  # link  # void  # return  # setName  # List  # ArrayList  # StringBuffer  # Tree  # setLink  # getLink 


相关文章: 英语简历制作免费网站推荐,如何将简历翻译成英文?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何通过FTP空间快速搭建安全高效网站?  如何快速查询网站的真实建站时间?  代购小票制作网站有哪些,购物小票的简要说明?  建站之星如何实现五合一智能建站与营销推广?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  如何用免费手机建站系统零基础打造专业网站?  如何撰写建站申请书?关键要点有哪些?  如何选择高效可靠的多用户建站源码资源?  建站之星免费版是否永久可用?  活动邀请函制作网站有哪些,活动邀请函文案?  清除minerd进程的简单方法  如何解决VPS建站LNMP环境配置常见问题?  如何通过NAT技术实现内网高效建站?  如何通过虚拟主机快速搭建个人网站?  建站OpenVZ教程与优化策略:配置指南与性能提升  广东专业制作网站有哪些,广东省能源集团有限公司官网?  深入理解Android中的xmlns:tools属性  建站之星与建站宝盒如何选择最佳方案?  微信小程序 input输入框控件详解及实例(多种示例)  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  青岛网站建设如何选择本地服务器?  建站之星如何实现PC+手机+微信网站五合一建站?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  网站制作企业,网站的banner和导航栏是指什么?  如何确保西部建站助手FTP传输的安全性?  无锡营销型网站制作公司,无锡网选车牌流程?  广德云建站网站建设方案与建站流程优化指南  魔方云NAT建站如何实现端口转发?  如何快速生成橙子建站落地页链接?  如何通过西部建站助手安装IIS服务器?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  如何在云主机上快速搭建多站点网站?  如何在景安服务器上快速搭建个人网站?  如何通过商城自助建站源码实现零基础高效建站?  建站上市公司网站建设方案与SEO优化服务定制指南  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何配置FTP站点权限与安全设置?  建站之星导航菜单设置与功能模块配置全攻略  北京网站制作的公司有哪些,北京白云观官方网站?  如何选择网络建站服务器?高效建站必看指南  建站之星导航如何优化提升用户体验?  如何通过VPS建站实现广告与增值服务盈利?  建站之星导航配置指南:自助建站与SEO优化全解析  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  建站10G流量真的够用吗?如何应对访问高峰?  网站制作的步骤包括,正确网址格式怎么写?  如何在Golang中指定模块版本_使用go.mod控制版本号  网站制作免费,什么网站能看正片电影? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。