数据库表中存放着节点信息,表结构为: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代码遍历文件夹,生成一个文件夹目录结构的目录树。 及返回一个包含有 id(文件夹id) fid(当前文件夹父目录文件夹id) name (文件/文件夹路径)的集合对象。可根据这个结果传到前台,通过jquery.ztree 或是...
将Dir.class放在任意需要遍历的文件目录,直接命令窗口运行java Dir生成Dir.txt文件
该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用...
90%以上代码可以生成验证、生成三层代码、生成完善的权限系统、生成数据库等功能 功能之强大用了就知道! 两年前,我负责指导Java方向实训,在最后评审准备过程,.Net组负责人要求Java和.Net的归结一起统一评审,...
第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 实体域对象的其他持久化模式...
实现的是一个MiniJava的扩展语言, ...生成JAVA类,只要调用XyzJavaParser的Progarm方法,就会返回语法树的根节点。同时token 流也会到底末尾,如果想重新获取第一个TOKEN,就要刷新流对象了。 不明白可以去博客留言
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
使用从不同视点拍摄的一系列图像生成对象的3D模型的软件。 可以在不同的分辨率级别上生成并可视化生成的模型。 可以使用不同类型的体素来渲染模型。 以下视频是3Dorfi的一个小型演示。 描述 该存储库的源代码是为...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
showInstVar.java 演示不同的对象拥有不同的成员变量 showMain.java 演示main方法访问本类成员 showMethod.java 演示如何定义一个方法体 showReturn_1.java return语句示例1 showReturn_2.java return语句示例2...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...