全网整合营销服务商

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

免费咨询热线: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 


相关文章: 建站之星多图banner生成与模板自定义指南  如何解决ASP生成WAP建站中文乱码问题?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  建站之星安装后界面空白如何解决?  建站主机如何选?性能与价格怎样平衡?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  建站DNS解析失败?如何正确配置域名服务器?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  如何高效利用亚马逊云主机搭建企业网站?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  如何确认建站备案号应放置的具体位置?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  大连网站制作公司哪家好一点,大连买房网站哪个好?  制作网站外包平台,自动化接单网站有哪些?  再谈Python中的字符串与字符编码(推荐)  成都响应式网站开发,dw怎么把手机适应页面变成网页?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  宝塔新建站点为何无法访问?如何排查?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  教学论文网站制作软件有哪些,写论文用什么软件 ?  建站之星2.7模板:企业网站建设与h5定制设计专题  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  建站主机无法访问?如何排查域名与服务器问题  青浦网站制作公司有哪些,苹果官网发货地是哪里?  自助网站制作软件,个人如何自助建网站?  简单实现Android文件上传  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何获取上海专业网站定制建站电话?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  如何快速上传建站程序避免常见错误?  上海网站制作开发公司,上海买房比较好的网站有哪些?  高端企业智能建站程序:SEO优化与响应式模板定制开发  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  制作网站的模板软件,网站怎么建设?  如何快速上传自定义模板至建站之星?  C++中引用和指针有什么区别?(代码说明)  建站主机默认首页配置指南:核心功能与访问路径优化  如何快速搭建支持数据库操作的智能建站平台?  ,怎么用自己头像做动态表情包?  如何快速生成ASP一键建站模板并优化安全性? 

您的项目需求

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