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