`

生成java树对象

    博客分类:
  • Java
 
阅读更多
http://javasl.blog.sohu.com/128841203.html

数据库表中存放着节点信息,表结构为:id 为节点id,name为节点名字,pid为其父节点,如果pid为0则表示此节点为根节点。根据表中数据信息生成一个数对象,里面存放节点的树状信息。

代码如下:

//节点对象

public class Person {

 

       private String id;

   private String pid;

   private String name;

 

getter …

setter …    

}




// 树根对象,里面级联存储子节点信息,直到树叶

public class TreeObj {

 

       private String id;

   private String name;

   private List<TreeObj > cList =new ArrayList<TreeObj>();

      

getter …

setter …

}




public class Test {

 

    public static void main(String[] argStrings) {

 

        List<Person> pList = new ArrayList<Person>();

        pList.add(createPerson("1", "0", "a"));

        pList.add(createPerson("2", "0", "b"));

        pList.add(createPerson("3", "2", "c"));

        pList.add(createPerson("4", "2", "d"));

        pList.add(createPerson("5", "0", "e"));

        pList.add(createPerson("6", "5", "f"));

        pList.add(createPerson("7", "6", "g"));

 

        List<TreeObj> treeList = new ArrayList<TreeObj>();

 

        for (Person person : pList) {

            // find root note

            if ("0".equals(person.getPid())) {

                TreeObj treeObj = new TreeObj();

                treeObj.setId(person.getId());

                treeObj.setName(person.getName());

 

                treeList.add(putObjIterater(pList,treeObj));

            }

        }

        System.out.println(treeList);

    }

 

    private static Person createPerson(String id, String pid,String name) {

        Person p1 = new Person();

        p1.setId(id);

        p1.setPid(pid);

        p1.setName(name);

        return p1;

    }

 

    private static TreeObj putObjIterater(List<Person> pList, TreeObj treeObj) {

        // find child notes from pList and and the list in treeObj

        for (Person person : pList) {

            if (treeObj.getId().equals(person.getPid())) {

                // if treeObj has child note ,add it to the treeObj's list

                TreeObj newTreeObj = new TreeObj();

                newTreeObj.setId(person.getId());

                newTreeObj.setName(person.getName());

                treeObj.getCList().add(newTreeObj);

                putObjIterater(pList, newTreeObj);

            }

        }

        return treeObj;

    }

 

}




打印出的treeList就是我们要得到的树对象。
分享到:
评论

相关推荐

    生成树对象及读取操作

    生成树对象通常指的是在编程中构建和操作树结构的过程。在这个主题中,我们将深入探讨如何创建、操作以及读取树对象。 首先,我们需要理解树的基本概念。树由节点(或顶点)和边组成,其中每个节点可以有零个或多...

    数据库实体生成 C#对象生成 JAVA对象生成

    数据库实体生成、C#对象生成和JAVA对象生成是软件开发中的关键步骤,特别是在数据库驱动的应用程序中。这些过程涉及到将数据库中的表结构映射到编程语言中的类对象,以便于在代码中操作数据。以下是对这些概念的详细...

    图的最小生成树java代码

    在这个“图的最小生成树Java代码”项目中,我们可以看到三个关键文件:`Graph.java`, `TestGraph.java`, 和 `Vertex.java`。每个文件都有其特定的作用: 1. **Graph.java**: 这个文件通常会定义一个图类,用于存储...

    JAVA生成标准树

    在Java编程中,生成树是一种常见的数据结构操作,特别是在构建层级关系或表示组织结构时。在给定的描述中,我们看到的是一个用于生成无限层级树的Java服务层方法。这个例子是关于如何构建一个标准的树结构,其中每个...

    java遍历文件目录生成树结构txt文件

    在Java编程中,遍历文件目录并生成树结构的文本文件是一个常见的任务,尤其是在处理大量文件数据时。这个任务可以通过使用Java的`java.io.File`类及其相关API来实现。`Dir.class`和`Dir.java`是这次操作的核心文件,...

    xml文件自动转成java对象工具

    2. **生成Java类结构**:根据XSD中的元素和属性,工具自动生成对应的Java类,每个元素变成类的一个字段,属性则作为类的getter和setter方法。 3. **处理复杂类型**:如果XSD中定义了复杂类型,工具会创建相应的Java...

    java动态生成目录树

    在Java开发中,动态生成目录树是一项常见的任务,特别是在构建Web应用时,为了方便用户浏览和管理层次结构的数据。在这个场景中,我们使用了Dtree这个JavaScript库来辅助实现这一功能,并结合Ajax技术以JSON和XML两...

    java 生成文件结构目录树

    使用纯java代码遍历文件夹,生成一个文件夹目录结构的目录树。 及返回一个包含有 id(文件夹id) fid(当前文件夹父目录文件夹id) name (文件/文件夹路径)的集合对象。可根据这个结果传到前台,通过jquery.ztree 或是...

    java模拟编译器,实现词法,语法分析,生成语法树

    Java模拟编译器是一个用于理解和处理Java源代码的软件,它涵盖了词法分析、语法分析以及生成语法树等多个关键步骤。下面我们将深入探讨这些概念及其在Java模拟编译器中的应用。 首先,我们从词法分析开始。词法分析...

    java解析xml动态生成树形菜单结构

    总结起来,实现“java解析xml动态生成树形菜单结构”的项目,需要掌握以下核心知识点: 1. Java的DOM解析XML,构建树形数据结构。 2. 设计和实现无限层级的树形菜单数据模型。 3. 使用`JSTree`库在前端渲染树形菜单...

    java 生成树形文件目录

    在Java编程中,生成树形文件目录是一项常见的任务,它涉及到文件系统操作和数据结构的知识。这个任务的主要目的是创建一个程序,能够以树状结构显示计算机中的文件和目录,类似于Windows资源管理器中的视图。这里...

    解析xml,生成java类

    1. DOM解析:DOM(Document Object Model)模型将XML文档视为一个树形结构,通过创建一个内存中的文档对象模型来解析XML。这种方法适合小规模的XML文件,因为会将整个文件加载到内存中。 2. SAX解析:SAX(Simple ...

    java从文件中读取数据Kruskal算法解决最小生成树

    在这个问题中,我们关注的是如何利用Java编程语言,结合Kruskal算法来解决最小生成树的问题,并且从文件中读取数据来实现这一过程。 Kruskal算法是一种贪心算法,其基本思想是按照边的权重从小到大依次考虑,每次...

    基于Eclipse-JDT生成Java源代码的AST并可视化.zip

    本资料“基于Eclipse-JDT生成Java源代码的AST并可视化.zip”着重介绍了如何利用Eclipse JDT来生成Java源代码的抽象语法树(Abstract Syntax Tree, AST)并进行可视化展示。 首先,让我们深入了解什么是AST。AST是一...

    动态生成菜单树

    这里,我们主要探讨的是如何使用JSP(JavaServer Pages)来实现这个功能,结合数据库查询获取的数据来动态构建菜单树。 首先,我们需要理解菜单树的基本概念。菜单树是一种数据结构,它模拟了现实中层次化的菜单,...

    JAVA 生成树状图及饼图

    根据给定的信息,本文将详细解析如何在Java中利用JFreeChart库生成树状图(这里实际是指柱状图)和饼图。 ### 一、Java生成饼图 #### 1.1 准备工作 在Java中生成饼图之前,我们需要确保已经正确配置了JFreeChart...

    JAXB完成XML和Java对象的互转

    该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用...

    JAVA打印生成圣诞树代码

    6. **面向对象编程**:将生成圣诞树的功能封装成一个类,可以使代码更具可读性和可重用性。我们可以定义一个名为`ChristmasTree`的类,其中包含一个`printTree()`方法来执行打印操作。 以下是一个简单的示例代码,...

    xml自动生成java代码(改)

    "xml自动生成java代码(改)"这个主题指的是通过解析XML文件来生成对应的Java类,以便于简化开发过程,提高效率。通常,这涉及到XML解析技术,如DOM解析,以及Java文件的读写操作。 DOM解析是处理XML文档的一种方法...

    java动态树形菜单

    在Java中,我们可以使用自定义标签库(JSTL)或者直接使用Java代码来生成树形结构。本例中可能使用了JSP和Servlet技术。Servlet负责处理请求,可能包括从数据库或者其他数据源获取菜单数据,然后将这些数据组织成树...

Global site tag (gtag.js) - Google Analytics