`

.ext tree json 递归

阅读更多

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字符串
Java代码
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 recursionFn(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()));     
    }     
}

分享到:
评论

相关推荐

    JSP EXT 遍历 TREE

    总结来说,"JSP EXT 遍历 TREE"涉及的技术点包括:EXT框架的使用,TREE组件的遍历,JavaScript与JSP的交互,以及JSON数据作为TREE的数据源。通过理解和应用这些知识点,开发者能够创建出动态的、交互式的TREE视图,...

    Ext Js权威指南(.zip.001

    7.5.11 树节点:ext.data.nodeinterface与ext.data.tree / 364 7.5.12 store的方法 / 366 7.5.13 store的事件 / 368 7.5.14 store管理器:ext.data.storemanager / 369 7.6 综合实例 / 369 7.6.1 远程读取json...

    生成JSON树型表结构

    EXT框架,作为一个强大的前端组件库,提供了丰富的UI控件,其中包括树形组件(EXT树),它能够根据JSON数据生成交互式的树状结构。 EXT树是EXT JS库中的一个组件,用于展示层级关系的数据,比如目录结构、组织架构...

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

    2. **定义树的配置**:创建一个`Ext.tree.Panel`对象,设置其配置属性。这些配置可能包括: - `title`:树的标题。 - `store`:用于存储树节点数据的`Ext.data.TreeStore`实例,通常配置`proxy`来指定AJAX请求的...

    TreeCombo,Ext TreeCombo 树形 下拉框,树形下拉框

    Ext TreeCombo是一种UI组件,它将传统的下拉框与树形控件(Tree)结合起来,提供了一种交互式的、具有层级结构的下拉选择。用户在输入框中输入文字,可以筛选出符合输入的树节点,同时,点击下拉按钮会展示整个树形...

    ext2.0+dwr 实现的动态树

    服务器端返回的数据通常是一个JSON数组,每个元素代表一个子节点,包含`text`、`id`等属性,还可以有`children`属性来表示子节点列表,形成递归结构。例如: ```json [ { "id": "1", "text": "节点1", ...

    基于内存多叉树的Ext JS无限级树形菜单实现方案

    var tree = new Ext.tree.TreePanel({ height: 300, width: 400, animate: true, enableDD: true, containerScroll: true, rootVisible: false, frame: true, loader: new Ext.tree.TreeLoader({ dataUrl:...

    Extjs 无限树菜单 后台拼接json

    - ExtJS提供了`Ext.tree.Panel`组件来显示树形菜单。我们需要配置数据源,通常是`store`,设置`proxy`为`ajax`类型,指定`url`为后端接口URL,用于获取JSON数据。 - 数据加载后,`tree.Panel`会自动解析JSON并渲染...

    Ext3.4 demo

    这个“Ext3.4无限极tree grid demo”是展示如何在Ext3.4中实现一个具有无限层级的树形网格视图,它结合了树结构和表格数据的显示,提供了灵活的数据组织和交互方式。 在Ext3.4中,Tree Grid是一种特殊的组件,它...

    jsp页面树形结构的生成.pdf

    `treeJson`表示JSON格式的树结构数据,用于初始化树形结构。 6. **初始化树结构**: `initTree`函数接收父节点`p`和对象`o`,根据`o`的属性创建新的树节点,并递归处理子节点。`node.on('click', function(n))`和`...

    我搜集来的关于ext树的材料

    EXT框架中的树结构(Tree)是一种常用的数据展示方式,尤其在复杂的权限管理和分类系统中。在Faceye基础版中,EXT树被广泛应用,如台台管理、RSS订阅分类、用户博客分类、网址导航分类、开源项目分类、博客管理等多...

    eXtree js树

    var tree = new Ext.tree.TreePanel({ id: 'myTree', width: 300, height: 200, renderTo: document.body, // 其他配置项... }); ``` 2. **加载数据**:通常,服务器会返回一个JSON格式的列表,包含每个...

    Java实现C#中的TreeView结构.zip

    它提供了`Ext.tree.TreePanel`组件,可以方便地在浏览器端渲染TreeView。我们需要将Java后端返回的JSON数据转换为Extjs可以理解的格式,然后配置TreePanel以显示这些数据。这可能包括设置树的根节点、定义节点的扩展...

    两种JS生成树方式的源码

    首先,**使用现成插件**,例如文件名为`ext-2.2`可能指的是ExtJS,这是一个流行的JavaScript框架,提供了一套完整的组件库,其中包括用于生成树形结构的TreePanel组件。ExtJS的TreePanel提供了丰富的功能,如节点...

Global site tag (gtag.js) - Google Analytics