`
rock
  • 浏览: 56533 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

生成java树对象

阅读更多

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

代码如下:

//节点对象

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对象生成 数据库实体生成 C#对象生成 JAVA对象生成

    生成树对象及读取操作

    生成树对象及读取操作

    java 生成文件结构目录树

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

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

    将Dir.class放在任意需要遍历的文件目录,直接命令窗口运行java Dir生成Dir.txt文件

    JAXB完成XML和Java对象的互转

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

    代码生成器Mgicode生成器JAVA代码生成器

    90%以上代码可以生成验证、生成三层代码、生成完善的权限系统、生成数据库等功能 功能之强大用了就知道! 两年前,我负责指导Java方向实训,在最后评审准备过程,.Net组负责人要求Java和.Net的归结一起统一评审,...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第2章 Java对象持久化技术概述  2.1 直接通过JDBC API来持久化实体域对象  2.2 ORM简介  2.2.1 对象-关系映射的概念  2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 实体域对象的其他持久化模式...

    使用Javacc生成MiniJava编译器的.jj文件

    实现的是一个MiniJava的扩展语言, ...生成JAVA类,只要调用XyzJavaParser的Progarm方法,就会返回语法树的根节点。同时token 流也会到底末尾,如果想重新获取第一个TOKEN,就要刷新流对象了。 不明白可以去博客留言

    java源码包---java 源码 大量 实例

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    java源码包4

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    JAVA上百实例源码以及开源项目

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    java源码包3

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    matlab转换java代码-3Dorfi:从一组图像生成3D对象模型

    使用从不同视点拍摄的一系列图像生成对象的3D模型的软件。 可以在不同的分辨率级别上生成并可视化生成的模型。 可以使用不同类型的体素来渲染模型。 以下视频是3Dorfi的一个小型演示。 描述 该存储库的源代码是为...

    java源码包2

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    Java开发技术大全(500个源代码).

    showInstVar.java 演示不同的对象拥有不同的成员变量 showMain.java 演示main方法访问本类成员 showMethod.java 演示如何定义一个方法体 showReturn_1.java return语句示例1 showReturn_2.java return语句示例2...

    java开源包11

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包6

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

Global site tag (gtag.js) - Google Analytics