Java递归应用:输出树形菜单
来源:互联网 发布:nginx 配置 域名解析 编辑:程序博客网 时间:2024/06/13 17:12
树节点类:
package cn.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 cn.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;}}
测试类:
package zzj.test;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>浏览器效果:
2 0
- Java递归应用:输出树形菜单
- Java递归应用:输出树形菜单
- Java递归应用:输出树形菜单
- Java递归应用:输出树形菜单
- 【Java递归】如何输出树形菜单
- Java树形菜单 递归实现
- tree 递归 树形菜单!
- 递归树形菜单
- 树形菜单递归
- 递归输出树形节点
- jqgrid 树形菜单递归加载
- 使用递归输出树形目录
- java树形菜单
- java树形菜单实现
- java树形菜单
- java学习笔记 使用递归 将文件目录树形结构输出,递归删除目录 文件夹。
- asp.net不用递归呈现树形菜单
- TreeView控件递归实现树形菜单
- “隐写术”的趋势
- 第十二届北京师范大学程序设计竞赛 B 数细菌
- 整合Spring MVC,mybatis,hibernate,freemarker框架实现的自定义注解Validator验证机制实现对敏感词过滤的代码分享
- 虚函数表
- 家用游戏机禁令取消后的中国游戏市场
- Java递归应用:输出树形菜单
- 安卓启动相关以及架构设计相关
- BNUOJ 34978 汉诺塔 (概率dp)
- 错误:媒体集有 2 个媒体簇,但只提供了 1 个的解决方案
- vim自己添加//的解决方法
- Android手机平板两不误,使用Fragment实现兼容手机和平板的程序
- 从国际编码竞赛来看编程语言受众度
- Mininet简介
- IOS之间的调用