本文实例为大家分享了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小时内与您取得联系。