数据库表中存放着节点信息,表结构为: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对象生成是软件开发中的关键步骤,特别是在数据库驱动的应用程序中。这些过程涉及到将数据库中的表结构映射到编程语言中的类对象,以便于在代码中操作数据。以下是对这些概念的详细...
在这个“图的最小生成树Java代码”项目中,我们可以看到三个关键文件:`Graph.java`, `TestGraph.java`, 和 `Vertex.java`。每个文件都有其特定的作用: 1. **Graph.java**: 这个文件通常会定义一个图类,用于存储...
在Java编程中,生成树是一种常见的数据结构操作,特别是在构建层级关系或表示组织结构时。在给定的描述中,我们看到的是一个用于生成无限层级树的Java服务层方法。这个例子是关于如何构建一个标准的树结构,其中每个...
在Java编程中,遍历文件目录并生成树结构的文本文件是一个常见的任务,尤其是在处理大量文件数据时。这个任务可以通过使用Java的`java.io.File`类及其相关API来实现。`Dir.class`和`Dir.java`是这次操作的核心文件,...
在Java开发中,动态生成目录树是一项常见的任务,特别是在构建Web应用时,为了方便用户浏览和管理层次结构的数据。在这个场景中,我们使用了Dtree这个JavaScript库来辅助实现这一功能,并结合Ajax技术以JSON和XML两...
使用纯java代码遍历文件夹,生成一个文件夹目录结构的目录树。 及返回一个包含有 id(文件夹id) fid(当前文件夹父目录文件夹id) name (文件/文件夹路径)的集合对象。可根据这个结果传到前台,通过jquery.ztree 或是...
Java模拟编译器是一个用于理解和处理Java源代码的软件,它涵盖了词法分析、语法分析以及生成语法树等多个关键步骤。下面我们将深入探讨这些概念及其在Java模拟编译器中的应用。 首先,我们从词法分析开始。词法分析...
总结起来,实现“java解析xml动态生成树形菜单结构”的项目,需要掌握以下核心知识点: 1. Java的DOM解析XML,构建树形数据结构。 2. 设计和实现无限层级的树形菜单数据模型。 3. 使用`JSTree`库在前端渲染树形菜单...
1. DOM解析:DOM(Document Object Model)模型将XML文档视为一个树形结构,通过创建一个内存中的文档对象模型来解析XML。这种方法适合小规模的XML文件,因为会将整个文件加载到内存中。 2. SAX解析:SAX(Simple ...
在Java编程中,生成树形文件目录是一项常见的任务,它涉及到文件系统操作和数据结构的知识。这个任务的主要目的是创建一个程序,能够以树状结构显示计算机中的文件和目录,类似于Windows资源管理器中的视图。这里...
2. **生成Java类结构**:根据XSD中的元素和属性,工具自动生成对应的Java类,每个元素变成类的一个字段,属性则作为类的getter和setter方法。 3. **处理复杂类型**:如果XSD中定义了复杂类型,工具会创建相应的Java...
在这个问题中,我们关注的是如何利用Java编程语言,结合Kruskal算法来解决最小生成树的问题,并且从文件中读取数据来实现这一过程。 Kruskal算法是一种贪心算法,其基本思想是按照边的权重从小到大依次考虑,每次...
这里,我们主要探讨的是如何使用JSP(JavaServer Pages)来实现这个功能,结合数据库查询获取的数据来动态构建菜单树。 首先,我们需要理解菜单树的基本概念。菜单树是一种数据结构,它模拟了现实中层次化的菜单,...
根据给定的信息,本文将详细解析如何在Java中利用JFreeChart库生成树状图(这里实际是指柱状图)和饼图。 ### 一、Java生成饼图 #### 1.1 准备工作 在Java中生成饼图之前,我们需要确保已经正确配置了JFreeChart...
该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用...
6. **面向对象编程**:将生成圣诞树的功能封装成一个类,可以使代码更具可读性和可重用性。我们可以定义一个名为`ChristmasTree`的类,其中包含一个`printTree()`方法来执行打印操作。 以下是一个简单的示例代码,...
"xml自动生成java代码(改)"这个主题指的是通过解析XML文件来生成对应的Java类,以便于简化开发过程,提高效率。通常,这涉及到XML解析技术,如DOM解析,以及Java文件的读写操作。 DOM解析是处理XML文档的一种方法...
在Java中,我们可以使用自定义标签库(JSTL)或者直接使用Java代码来生成树形结构。本例中可能使用了JSP和Servlet技术。Servlet负责处理请求,可能包括从数据库或者其他数据源获取菜单数据,然后将这些数据组织成树...