`

递归实现的 ADF Dynamic tree

    博客分类:
  • ADF
SQL 
阅读更多

一个基于扩展: ChildPropertyTreeModel ,用递归实现的动态树. 自己花了点时间搞了个demo, 希望对后来学习的人有点帮助。 这里做一些内容的介绍:

 1: 递归实现:parentId: 树的根节点: treeNode: 当前节点的父节点,如果不是父节点,就以treeNode最后加入的节点为父节点。 以下是代码:

         public void generateTree(int parentId , TreeNode treeNode){
      while(voi.hasNext()){
        Row row = voi.next();       
        int pId= ((Number)row.getAttribute("ParentId")).intValue();
          int id = ((Number)row.getAttribute("Id")).intValue();
            String label=String.valueOf(row.getAttribute("NavLabel"));
            TreeNode tempNode=new TreeNode("Node",label);        
            tempNode.setLevel(((Number)row.getAttribute("NavLevel")).intValue());
            Map map=new HashMap();
            map.put("NavLabel", label);
            map.put("Id", id);
            map.put("NavAction", row.getAttribute("NavAction"));
            tempNode.setAttributes(map);    
            if(pId==parentId || treeNode==null){
              trees.add(tempNode);
              treeNode=tempNode;
            }else if(pId == treeNode.getAttributes().get("Id")){
              treeNode.getChildren().add(tempNode);
            }else{
                TreeNode[] nodes = (TreeNode[])treeNode.getChildren().toArray();
                treeNode = nodes[nodes.length-1];
                treeNode.getChildren().add(tempNode);
            }
            generateTree(parentId,treeNode);
         
      }

  2: navigation.sql 是数据库执行文件.  最终执行如下图:

demo tree

  • 大小: 14 KB
分享到:
评论

相关推荐

    用Java集合递归实现通用树Tree

    本资源主要关注如何使用Java集合框架来递归实现一个通用的树结构,即`Tree`。下面我们将深入探讨这个主题。 首先,我们要了解Java集合框架。Java集合框架是Java语言提供的一组接口和类,用于存储和操作各种数据结构...

    java递归实现树(Tree)

    一个简单的小例子递归实现list按照index排序的树

    jsp jstl 递归 输出树 Tree 后台 Java 集合 递归 实现通用 树Tree

    本主题将深入探讨如何使用Java集合、JSP和JSTL来递归地创建并输出树形结构(Tree),特别是用于前端展示。 首先,我们要理解Java集合在构建树结构中的作用。在Java中,可以使用ArrayList、LinkedList或者自定义的...

    ackermann函数的递归实现和非递归实现

    非递归实现的基本思想是将递归调用转化为循环,并使用数据结构(如堆栈)存储中间结果,避免了递归带来的调用栈溢出问题。 非递归实现的步骤大致如下: 1. 初始化一个堆栈,用于保存待处理的阿克曼函数参数对`(m, ...

    快速选择非递归与递归算法实现

    空间复杂度方面,非递归实现主要取决于分区操作和栈的使用,而递归实现则依赖于递归深度,一般情况下都是O(log n)。 在实际编程中,可以根据具体需求选择非递归或递归实现。非递归版本更适合内存有限或者递归深度...

    快速排序 --- 非递归实现

    快速排序是一种高效的排序算法,由英国计算机科学家C.A.R....总的来说,这个压缩包提供了一个非递归实现快速排序的完整示例,通过自定义栈的数据结构,实现了快速排序算法,适用于理解和学习快速排序的非递归实现方式。

    阿克曼函数非递归实现

    通过以上分析,我们可以看到,阿克曼函数的非递归实现主要涉及堆栈操作、递归转换以及对计算复杂性的理解。这个话题对于学习数据结构和算法的学生来说,是一个挑战性的实践项目,有助于提升他们的编程技能和对复杂...

    八皇后递归及非递归实现源码

    八皇后递归及非递归实现源码; 八皇后递归及非递归实现源码

    C语言递归实现逆序程序

    C语言递归实现逆序程序 C语言初学者必会

    java 用递归实现字符串反转

    ### Java使用递归实现字符串反转 在Java编程语言中,递归是一种常用的方法来解决许多问题,特别是那些可以通过分解成更小子问题来解决的问题。本文将详细介绍如何使用递归来实现字符串的反转。 #### 一、递归基础...

    递归实现回文判断

    根据给定的文件信息,我们可以总结出以下关于“递归实现回文判断”的知识点: ### 一、回文概念 回文是指一个字符串从左到右读和从右到左读都是一样的字符串。例如,“abcba”、“madam”等都是回文字符串。 ### ...

    递归实现字符串逆序

    ### 递归实现字符串逆序 #### 知识点概览 本文将详细介绍如何使用C++中的递归技术来实现字符串的逆序操作。逆序字符串是一个常见的编程问题,在多种场景下都有应用,例如文本处理、算法设计等。通过递归方法解决此...

    汉诺塔的非递归实现,c++

    总之,非递归的汉诺塔问题C++实现是一种创新的解决方案,它利用数据结构来避免递归调用的开销,展示了算法设计的灵活性和创造性。通过学习这种实现,你可以更深入地理解数据结构、算法以及它们在实际编程中的应用。

    不用递归实现的无限级树型菜单

    传统的实现方式通常使用递归算法,但这种方法可能会导致内存消耗过大,尤其是在菜单层级很深的情况下。本主题介绍了一种不依赖递归的高效方法来创建无限级树型菜单,具有快速加载的特点。 首先,我们来看`WriteXML....

    非递归实现fibonacci数列

    使用C++非递归实现fibonacci数列,对正在学习算法的同学应该挺有帮助的

    MyBatis之自查询使用递归实现 N级联动效果(两种实现方式)

    "MyBatis之自查询使用递归实现 N级联动效果" MyBatis是一个功能强大且灵活的持久层框架,它支持自查询和递归查询,下面我们将探讨如何使用MyBatis实现 N级联动效果。 递归查询 递归查询是指在一个查询中调用自身...

    递归实现字符串反向输出

    ### 递归实现字符串反向输出 在计算机科学领域,递归是一种常用且重要的编程技巧。本文将通过一个具体的例子——使用C语言实现字符串的反向输出,来深入理解递归的基本概念及其应用。 #### 一、递归基础 递归...

    非递归实现最短哈密尔顿回路

    非递归实现的最短哈密顿回路,用分支限界法优化,但速度不太理想。

    二叉树的创建与三种遍历的递归与非递归实现

    二叉树的创建与三种遍历的递归与非递归实现 包括二叉树的动态创建,前序遍历,中序遍历,后续遍历的递归与非递归方法的实现。

Global site tag (gtag.js) - Google Analytics