ExtJs树的递归算法(Java),Json格式
2012-05-06 11:43
393 查看
首先先建立Node模型
下面这个类先手工建立List,在实际应用中是从数据库读取List,然后再Main方法里调用递归方法,得到Json字符串
Main方法运行效果如下:
[{id:1,parentId:0,children:[{id:2,parentId:1,children:[{id:4,parentId:2,leaf:true},{id:5,parentId:2,leaf:true},{id:6,par
entId:2,children:[{id:7,parentId:6,leaf:true},{id:8,parentId:6,leaf:true}]}]},{id:3,parentId:1,leaf:true}]}]
在具体的应用中稍加修改即可
本文章来自:http://emlyn1180.iteye.com/blog/315334
public class Node { private int id; private int parentId; Node(){} Node(int id,int parentId){ this.id=id; this.parentId = parentId; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getParentId() { return parentId; } public void setParentId(int parentId) { this.parentId = parentId; } }
下面这个类先手工建立List,在实际应用中是从数据库读取List,然后再Main方法里调用递归方法,得到Json字符串
import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Recursion { List nodeList =new ArrayList(); Recursion(){//构造方法里初始化模拟List Node node1 = new Node(1,0); Node node2 = new Node(2,1); Node node3 = new Node(3,1); Node node4 = new Node(4,2); Node node5 = new Node(5,2); Node node6 = new Node(6,2); Node node7 = new Node(7,6); Node node8 = new Node(8,6); nodeList.add(node1); nodeList.add(node2); nodeList.add(node3); nodeList.add(node4); nodeList.add(node5); nodeList.add(node6); nodeList.add(node7); nodeList.add(node8); } StringBuffer returnStr=new StringBuffer(); public void recursi 4000 onFn(List list , Node node){ if(hasChild(list,node)){ returnStr.append("{id:"); returnStr.append(node.getId()); returnStr.append(",parentId:"); returnStr.append(node.getParentId()); returnStr.append(",children:["); List childList = getChildList(list,node); Iterator it = childList.iterator(); while(it.hasNext()){ Node n = (Node)it.next(); recursionFn(list,n); } returnStr.append("]},"); }else{ returnStr.append("{id:"); returnStr.append(node.getId()); returnStr.append(",parentId:"); returnStr.append(node.getParentId()); returnStr.append(",leaf:true},"); } } public boolean hasChild(List list, Node node){ //判断是否有子节点 return getChildList(list,node).size()>0?true:false; } public List getChildList(List list , Node node){ //得到子节点列表 List li = new ArrayList(); Iterator it = list.iterator(); while(it.hasNext()){ Node n = (Node)it.next(); if(n.getParentId()==node.getId()){ li.add(n); } } return li; } public String modifyStr(String returnStr){//修饰一下才能满足Extjs的Json格式 return ("["+returnStr+"]").replaceAll(",]", "]"); } public static void main(String[] args) { Recursion r = new Recursion(); r.recursionFn(r.nodeList, new Node(1,0)); System.out.println(r.modifyStr(r.returnStr.toString())); } }
Main方法运行效果如下:
[{id:1,parentId:0,children:[{id:2,parentId:1,children:[{id:4,parentId:2,leaf:true},{id:5,parentId:2,leaf:true},{id:6,par
entId:2,children:[{id:7,parentId:6,leaf:true},{id:8,parentId:6,leaf:true}]}]},{id:3,parentId:1,leaf:true}]}]
在具体的应用中稍加修改即可
本文章来自:http://emlyn1180.iteye.com/blog/315334
相关文章推荐
- ExtJs树的递归算法(Java),Json格式
- ExtJs树的递归算法(Java),Json格式
- ExtJs树的递归算法(Java),Json格式
- 用java的json-lib生成的JSON日期格式,如何让ExtJS显示?详细内容请看贴。
- java 解析json格式字符串
- Json-lib, 实现Java对象与JSON数据格式的互转
- JS 对java返回的json格式的数据处理
- android/java中把对象、对象bean、Collection以及字符串转换成Json格式数据
- 将json格式的数组字符串转换为java集合
- java各种集合转换成json格式
- java实现类似ztree的json格式查询
- Java对象的序列化与反序列化:默认格式及JSON格式(使用jackson)
- 浅谈Java后台对JSON格式的处理操作
- JSON格式传递数据使用方法(JS和JAVA)
- 一个java处理JSON格式数据的通用类
- java将XML文档转换成json格式数据
- php array 转json java 转 json数据格式
- java 实现json格式字符串定义
- Json下日期格式控制 与 Java 日期计算
- java将实体对象转换成JSON格式的字符串