`
guoyong123
  • 浏览: 56480 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论
  • jateide: 还有个TRACE级别。另外还有两个特殊级别:ALL 和 OFF ...
    Log4j级别

ExtJs树的递归算法(Java),Json

 
阅读更多

http://emlyn1180.iteye.com/blog/315334

  1. public class Node {   
  2.     private int id;   
  3.     private int parentId;   
  4.     Node(){}   
  5.     Node(int id,int parentId){   
  6.         this.id=id;   
  7.         this.parentId = parentId;   
  8.     }   
  9.     public int getId() {   
  10.         return id;   
  11.     }   
  12.     public void setId(int id) {   
  13.         this.id = id;   
  14.     }   
  15.     public int getParentId() {   
  16.         return parentId;   
  17.     }   
  18.     public void setParentId(int parentId) {   
  19.         this.parentId = parentId;   
  20.     }   
  21. }  

 

 

 

 

 

  1. import java.util.ArrayList;   
  2. import java.util.Iterator;   
  3. import java.util.List;   
  4.   
  5.   
  6. public class Recursion {   
  7.     List nodeList =new ArrayList();   
  8.     Recursion(){//构造方法里初始化模拟List   
  9.         Node node1 = new Node(1,0);     
  10.         Node node2 = new Node(2,1);     
  11.         Node node3 = new Node(3,1);     
  12.         Node node4 = new Node(4,2);     
  13.         Node node5 = new Node(5,2);     
  14.         Node node6 = new Node(6,2);     
  15.         Node node7 = new Node(7,6);     
  16.         Node node8 = new Node(8,6);     
  17.              
  18.         nodeList.add(node1);     
  19.         nodeList.add(node2);     
  20.         nodeList.add(node3);     
  21.         nodeList.add(node4);     
  22.         nodeList.add(node5);     
  23.         nodeList.add(node6);     
  24.         nodeList.add(node7);     
  25.         nodeList.add(node8);     
  26.     }   
  27.     StringBuffer returnStr=new StringBuffer();     
  28.     public void recursionFn(List list , Node node){     
  29.         if(hasChild(list,node)){     
  30.             returnStr.append("{id:");   
  31.             returnStr.append(node.getId());   
  32.             returnStr.append(",parentId:");   
  33.             returnStr.append(node.getParentId());   
  34.             returnStr.append(",children:[");     
  35.             List childList = getChildList(list,node);     
  36.             Iterator it = childList.iterator();     
  37.             while(it.hasNext()){     
  38.                 Node n = (Node)it.next();     
  39.                 recursionFn(list,n);     
  40.             }     
  41.             returnStr.append("]},");     
  42.         }else{     
  43.             returnStr.append("{id:");   
  44.             returnStr.append(node.getId());   
  45.             returnStr.append(",parentId:");   
  46.             returnStr.append(node.getParentId());   
  47.             returnStr.append(",leaf:true},");     
  48.         }     
  49.              
  50.     }     
  51.     public boolean hasChild(List list, Node node){  //判断是否有子节点   
  52.         return getChildList(list,node).size()>0?true:false;   
  53.     }   
  54.     public List getChildList(List list , Node node){  //得到子节点列表   
  55.         List li = new ArrayList();     
  56.         Iterator it = list.iterator();     
  57.         while(it.hasNext()){     
  58.             Node n = (Node)it.next();     
  59.             if(n.getParentId()==node.getId()){     
  60.                 li.add(n);     
  61.             }     
  62.         }     
  63.         return li;     
  64.     }   
  65.     public String modifyStr(String returnStr){//修饰一下才能满足Extjs的Json格式   
  66.         return ("["+returnStr+"]").replaceAll(",]""]");   
  67.            
  68.     }   
  69.     public static void main(String[] args) {     
  70.         Recursion r = new Recursion();     
  71.         r.recursionFn(r.nodeList, new Node(1,0));     
  72.         System.out.println(r.modifyStr(r.returnStr.toString()));     
  73.     }     
  74. }  

分享到:
评论

相关推荐

    Extjs 无限树菜单 后台拼接json

    "Extjs 无限树菜单 后台拼接json"这个主题涉及到如何在后端生成无限级别的树形菜单数据,并通过JSON格式传输到前端进行渲染。 首先,我们要理解树形菜单的基本概念。树形菜单是一种以节点和层级关系展示数据的控件...

    一个运用Extjs,Struts2, json,iterator技术构建的iterator_jsonDemo2。 将数据从后台传到Extjs表现层。

    一个运用Extjs,Struts2, json,iterator技术构建的iterator_jsonDemo2。iterator_jsonDemo1的链接:http://download.csdn.net/detail/cafebar123/8816409 运用了Extjs,Struts2, json,iterator技术, 将数据从...

    ExtJs + Struts2 + JSON 程序总结

    ExtJs + Struts2 + JSON 是一种常见的前端与后端数据交互的技术组合,常用于构建富客户端应用。这里我们详细探讨一下这三个技术组件以及它们如何协同工作。 首先,ExtJs 是一个JavaScript库,用于创建复杂的、用户...

    Extjs 调用Java Json的例子

    这里我们将深入探讨如何使用ExtJS调用Java的JSON服务,从而实现前后端的数据交互。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 **ExtJS简介** ...

    extjs-json-数据转换

    使用ExtJs获取后台json格式的数据必须的七个jar包,commons-beanuti-1s-1.7.0.jar,commons-collections-3.1.jar,commons-lang-2.5.jar,commons-logging-1.0.4.jar,ezmorph-1.0.4.jar,json-lib-2.1.jar,...

    Extjs Json树封装

    在本文中,我们将深入探讨"Extjs Json树封装"这一主题,包括如何使用JSON数据加载树形结构,以及涉及到的相关工具和源码。 首先,我们需要理解JSON树的概念。在ExtJS中,一个JSON树是由多个JSON对象组成的,每个...

    extjs+servlet+json简单应用

    在Servlet中,我们可以将Java对象转换为JSON字符串,然后在响应中设置Content-Type为"application/json",这样ExtJS就能识别并解析这个响应。 在页面展示方面,ExtJS提供了多种组件,如表格(Grid)、面板(Panel)...

    @@@extjs+struts2+json plugin的例子

    `Struts2`可以通过其内置的JSON插件方便地将Java对象转换为JSON格式,然后发送给`ExtJS`,后者可以解析JSON数据并更新UI组件。 在这个例子中,开发者可能创建了一个`Struts2` Action,该Action处理来自`ExtJS`的...

    extjs4+servlet+json+soundmanager2实现定时刷新报警(原创)

    标题 "extjs4 + servlet + json + soundmanager2 实现定时刷新报警" 涉及的是一个基于Web的实时报警系统开发技术,其中包含了多个关键组件和技术。让我们逐一深入探讨这些知识点。 1. **EXTJS4**:EXTJS是一个用...

    extjs 树 搜索

    在EXTJS中,树形控件(Tree)是一种常见的数据展示方式,用于组织层次结构的数据。树形控件可以被广泛应用于文件系统、组织架构、菜单等场景。当我们需要在这些大量的层次数据中查找特定信息时,搜索功能就显得尤为...

    extjs json所需jar包

    在使用ExtJS处理JSON数据时,通常需要依赖一些特定的Java档案(JAR)库,这些库提供了与JSON相关的解析和序列化功能。"extjs json所需jar包"指的是支持ExtJS与JSON交互的Java类库。 JSON(JavaScript Object ...

    extjs 跟 struts+json

    ExtJS是一个强大的JavaScript库,用于构建富客户端Web应用程序,而Struts是Java Web开发中的一个MVC(模型-视图-控制器)框架。这篇文章可能涵盖了以下知识点: 1. **ExtJS Grid Panel**: - ExtJS中的Grid Panel...

    SSH+extjs+json动态树的搜索

    总结起来,这篇文章介绍了一种使用SSH、ExtJS和JSON实现动态树搜索的高效方法。它避免了全树展开的低效,通过路径查找提高了性能,同时通过ExtJS的事件处理和前端-后端通信实现了良好的用户体验。

    ExtJS_Tree利用_JSON_在Struts_2实现Ajax动态加载树结点

    在本文中,我们将深入探讨如何使用ExtJS框架的Tree组件,结合JSON数据格式以及Struts 2框架,来实现Ajax动态加载树形结构的节点。这是一项常见的需求,特别是在构建可扩展、用户友好的Web应用时,动态加载的树结构...

    ExtJS+struts2+json登陆实例--源码

    这个实例演示了如何将前端的JavaScript框架ExtJS与后端的Java MVC框架Struts2结合,通过JSON进行数据交换实现用户登录功能。下面将详细介绍各个组成部分。 首先,Ext JS 2.2是用于构建富客户端应用的JavaScript库,...

    ExtJs树例子

    在"ExtJs树例子"这个主题中,我们主要关注的是ExtJS如何实现树形控件(Tree Panel)。 树形控件在Web应用中广泛用于展示层次结构的数据,比如文件系统、组织架构或菜单导航。ExtJS提供了一个完善的TreePanel组件来...

    extjs异步树,多选树,json数据机构,集成spring,struts例子

    extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json...

    extjs ajax tree(js动态树,无需递归)

    ExtJS AJAX Tree是一种基于JavaScript的动态树形结构,它利用AJAX技术来异步加载节点数据,无需在服务器端生成完整的树结构。这种方式可以显著提高页面加载速度,尤其是在处理大量数据时。ExtJS是一个功能丰富的...

    struts2-hibernate-spring-Extjs-json.rar_JSON_extjs_extjs json st

    Struts2、Hibernate、Spring 和 ExtJS 是Java Web开发中常用的技术栈,它们共同构建了高效、可维护的Web应用程序。这个压缩包“struts2-hibernate-spring-Extjs-json.rar”显然包含了关于这些技术整合使用的参考资料...

    Extjs Grid+apsx+json Demo

    在"Extjs Grid+asp.net+json Demo"中,我们将探讨如何结合ExtJS Grid、ASP.NET以及JSON来实现一个数据展示和交互的示例。 首先,让我们理解每个组成部分的作用: 1. **ExtJS Grid**:这是一个客户端的组件,它使用...

Global site tag (gtag.js) - Google Analytics