Java解析目录树
2016-03-11 00:00
316 查看
前几天写了一个java解析tree,时间仓促,写了一个效率低下的方法(递归调用。每次调用时select一次数据表),这几天有空,重新整理了一下。把数据表一次全部查出放在List中,然后通过代码处理,废话不说,直接代码。
表结构:
domain
handler
这样,root List中就的数据就是所有的parent_id=="0"的节点。
再用一个JsonUtil工具类,就能把root转换成JSON字符串了。
表结构:
CREATE TABLE TREE ( "ID" VARCHAR2(32 BYTE) NOT NULL , //ID "NODE_NAME" VARCHAR2(64 BYTE) NULL ,//节点名称 "NODE_ID" VARCHAR2(32 BYTE) NULL ,//节点id "PARENT_ID" VARCHAR2(32 BYTE) NULL ,//父id "BZ" VARCHAR2(100 BYTE) NULL //备注 )
domain
import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class Tree implements Serializable { /** 内码 */ private String ID; /** 节点名称 */ private String node_name; /** 节点ID */ private String node_id; /** 父节点ID */ private String parent_id; /** 备注 */ private String bz; private List<Tree> nodes = new ArrayList<Tree>(); /* 省略get,set */ }
handler
List<Tree> list = //查出表中数据 // 存放根节点 List<Tree> root = new ArrayList<Tree>(); // map中介,在map中构造树 Map<String, Tree> tree = new HashMap(); //遍历所有数据,将数据放入(map key:node_id,value:Tree) for (Tree item : list) { // 如果为0,该节点为根节点 if ("0".equals(item.getParent_id())) { tree.put(item.getnode_id(), item); } else {// 如果不为0,先去map中取出该行的父节点,把该行添加进父节点的nodes集合,再把该行添加进map中(若该行也是父节点,则下次可以取出), Tree it = tree.get(item.getParent_id()); if (it != null) { it.getnodes().add(item); tree.put(item.getnode_id(), item); } } } // 循环完成之后。map中的数据重复。 // 在上面else中添加的子节点都包含在了父节点的nodes集合中,所以将parent_id==0的根节点添加进root集合中即可 Iterator<Entry<String, Tree>> it = tree.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); PublicityTree node = (Tree) entry.getValue(); if ("0".equals(node.getParent_id())) { root.add(node); } }
这样,root List中就的数据就是所有的parent_id=="0"的节点。
再用一个JsonUtil工具类,就能把root转换成JSON字符串了。
相关文章推荐
- java的IO性能调整
- struts2文件上传
- Java内存结构详解
- java抽象类跟接口的区别,看完转一下
- 验证日期是否有效 Java版
- Struts2.3.4.1+Spring3.2.3+Hibernate4.1.9整合
- Java——JDK1.5新增强的for循环
- Java——类的继承、访问控制
- Java——基础简介
- Java——方法重写
- Java——super
- Java——常用类(String)
- Java——package与import
- Java——常用类(基础类型数据包装类)
- Java——容器(Set)
- Java——常用类(File)
- Java——IO
- Java——this
- Java——递归调用
- Java——static