树形结构list构建(树形实体)
设计菜单树形表几个要素
1,id ,parentid
2,leveal
3,status
4,name
5,code
树形sql查出是按树形顺序排列的list(结果集),正真要形成树形结构的对象还要组织下(Tree(自包含结构)),
在设计树形数据的时候根节点的标志比如id=-1,或他的parentId=null,这样可以由这个根连接下去
树形实体结构的构建依赖于树形顺序的sql,以方便顺序组织(再利用迭代),
同理树形html的展现也是依赖树形顺序的sql,以方便组织(再利用迭代)(直接用sql的树形顺序展现的化需要多级标志,如果
用在sql树形顺序的结果基础上加工成tree结构的对象可以直接根据自包含结构遍历即可(字包含相当于一种级别的标记))用树形实体不要求查询的结果集为树形,在遍历的时候直接根据pid,id组装
迭代可以根据返回值和前部分逻辑的结果积累值,可以返回空通过修改传入变量的内存累加变量
普通迭代:用于直接利用树形sql的树形顺序结果集的顺序迭代累加(扁平结构,没有自包含用于构建树形html展现)
a (){
...
for(){///循环里是遍历出一个分支的所有子,多次就是多个分支(保证遍历到每个层级所有分支)
a();
}
}
循环迭代:用于在树形sql基础上构建字包含的有结构的树形对象
a(list){
for(B o:list){///循环里是遍历出一个分支的所有子,多次就是多个分支(保证遍历到每个层级所有分支)
List temp = list;//////解决list循环中不可移除问题
....
temp.remove(o);
a(temp);
}
}
属性结构的list和树形结构顺序的list对比如果还是要手动拼接渲染到jsp的话还是用原始的树形顺序即可
对于树形结构的list还是要根据leave(级别)分层拼接相当于还原成了树形顺序一遍,后才渲染
///迭代函数的数据叠加:
1,迭代函数都返回值,这个值在迭代过程用用一个变量接
2,迭代函数返回空,将一个空的对象传入,后面在迭代过程中用这个对象承接积累值(下面的是这种,以前的是第一种)
public Tree getSmallPowerMenu(Map<String, Object> param) throws Exception {
// TODO Auto-generated method stub
List<TbPowerGroupBeanVo> list= (List<TbPowerGroupBeanVo>) BeanUtils.ListMapToListBean(tbPowerGroupBeanDao.getSmallPowerMenu(param), TbPowerGroupBeanVo.class);
Map mr = new HashMap();/////可放一些标记性信息
mr.put("NodeName", "根节点");
Tree tree= new Tree("-1", 0, mr, 0);///这里是数据库没有写入此根,临时创,但是数据库的衔接是做好了,pid=-1;
createMenuTree(tree,list);
return tree;
}
用树形实体不要求查询的结果集为树形,在遍历的时候直接根据pid,id组装
private void createMenuTree(Tree tree, List<TbPowerGroup> list) {//list---树形sql的树形顺序数据,返回为void即可,因为他的操作直接基于变量的内存
/* 506 */ if (null == list) {
/* 507 */ return;
/* */ }
/* 509 */ if (tree.getType() == 1) {
/* 510 */ return;
/* */ }
/* 512 */ List temp = new ArrayList();/////解决list在循环过程中不能变动节点的问题,为了减少循环
/* 513 */ temp.addAll(list);
/* 514 */ for (TbPowerGroup tpg : list) {///遍历所有分支,内部是一条分支到底
/* 515 */ Map mr = new ExtendHashMap();
/* 516 */ mr.put("NodeName", tpg.getGROUP_NAME());
/* 517 */ mr.put("ACCOUNTID", tpg.getACCOUNTID());
/* 518 */ mr.put("URL_ADDRESS", tpg.getURL_ADDRESS());
/* 519 */ mr.put("FLAG", tpg.getFLAG());
/* 520 */ mr.put("ICOCLASS", tpg.getICOCLASS());
/* 521 */ mr.put("PARENT_KEY", tpg.getPARENT_KEY());
/* 522 */ mr.put("GROUP_LEVEL", tpg.getGROUP_LEVEL());
/* 523 */ mr.put("POWER_DEPICT", tpg.getPOWER_DEPICT());
/* 524 */ mr.put("GROUP_KEY", tpg.getGROUP_KEY());
/* 525 */ Tree t = new Tree(tpg.getGROUP_KEY().toString(), tpg.getGROUP_LEVEL().intValue() == 2 ? 1 : 0, mr, tpg.getLEVEL_CODE().intValue());
/* 526 */ if (tpg.getPARENT_KEY().toString().equals(tree.getId())) {
/* 527 */ tree.getSonList().add(t);
/* 528 */ temp.remove(tpg);////被循环利用到的才删除
/* 529 */ createMenuTree(t, temp);
/* */ }
/* */ }
/* */ }
/* */ package com.ylsoft.utils;
/* */
/* */ import java.io.Serializable;
/* */ import java.util.ArrayList;
/* */ import java.util.List;
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public class Tree
/* */ implements Serializable, Comparable
/* */ {
/* */ private String id;
/* 35 */ private int type = 0;
/* */
/* */ private Object myInfo;
/* */
/* 39 */ private Tree father = null;
/* */
/* 41 */ private List<Tree> sonList = new ArrayList();
/* */ private int displayOrder;
/* */
/* */ public Tree() {}
/* */
/* */ public Tree(String id, int type, Object myInfo, int displayOrder)
/* */ {
/* 48 */ this.id = id;
/* 49 */ this.type = type;
/* 50 */ this.myInfo = myInfo;
/* 51 */ this.displayOrder = displayOrder;
/* */ }
/* */
/* */ public Tree getFather() {
/* 55 */ return this.father;
/* */ }
/* */
/* */ public void setFather(Tree father) {
/* 59 */ this.father = father;
/* */ }
/* */
/* */ public String getId() {
/* 63 */ return this.id;
/* */ }
/* */
/* */ public void setId(String id) {
/* 67 */ this.id = id;
/* */ }
/* */
/* */ public Object getMyInfo() {
/* 71 */ return this.myInfo;
/* */ }
/* */
/* */ public void setMyInfo(Object myInfo) {
/* 75 */ this.myInfo = myInfo;
/* */ }
/* */
/* */ public List<Tree> getSonList() {
/* 79 */ return this.sonList;
/* */ }
/* */
/* */ public void setSonList(List<Tree> sonList) {
/* 83 */ this.sonList = sonList;
/* */ }
/* */
/* */ public int getType() {
/* 87 */ return this.type;
/* */ }
/* */
/* */ public void setType(int type) {
/* 91 */ this.type = type;
/* */ }
/* */
/* */ public int getDisplayOrder() {
/* 95 */ return this.displayOrder;
/* */ }
/* */
/* */ public void setDisplayOrder(int displayOrder) {
/* 99 */ this.displayOrder = displayOrder;
/* */ }
/* */
/* */ public int compareToOld(Object arg0) {
/* 103 */ if (arg0 == null)
/* 104 */ return 1;
/* 105 */ return this.id.compareTo(((Tree)arg0).getId());
/* */ }
/* */
/* */ public int compareTo(Object arg0) {
/* 109 */ if (arg0 == null)
/* 110 */ return 1;
/* 111 */ if (Integer.valueOf(this.type).compareTo(Integer.valueOf(((Tree)arg0).getType())) == 0) {
/* 112 */ return Integer.valueOf(this.displayOrder).compareTo(Integer.valueOf(((Tree)arg0).getDisplayOrder()));
/* */ }
/* 114 */ return Integer.valueOf(this.type).compareTo(Integer.valueOf(((Tree)arg0).getType()));
/* */ }
/* */ }
/* Location: E:\zdgroup\client\ROOT\WEB-INF\lib\rtp1.1.68.jar!\com\ylsoft\utils\Tree.class
* Java compiler version: 6 (50.0)
* JD-Core Version: 0.7.1
*/
相关推荐
在本示例中,我们将探讨如何使用Spring JPA来实现单表递归树形结构。 首先,我们需要理解递归树形结构。在数据库中,树形结构通常通过自关联来表示,即一个表的某个字段引用该表自身,形成一个层级关系。对于单表...
在C#中构建树形结构数据有多种方法,本文将介绍使用抽象的公用实体TreeObject来构建树形结构数据的方法。首先,我们定义一个抽象的公用实体TreeObject,以保证后续涉及到的List转化树形JSON。TreeObject中包含四个...
在MyBatis的映射XML文件中,`<collection>`标签用于表示一对多的关系,它允许我们在一次查询中获取到一个对象的所有子对象,从而构建出树形结构。例如,如果我们有一个`Department`实体类,其中包含一个`List...
在IT领域,构建树形结构的数据模型是一种常见的需求,特别是在服务器端开发中,例如Spring Boot应用。本主题探讨的是如何通过一次集合遍历来实现树形结构,这在处理层级数据,如组织架构、文件系统或者菜单导航时...
本文将深入探讨“Hibernate自身关联一对多实例(树形结构)”这一主题,这在构建具有层次结构的数据模型时尤其常见,例如组织结构、地区树或者商品分类等。 首先,我们需要理解Hibernate的核心概念。Hibernate允许...
本篇文章将深入探讨如何在Hibernate中映射树形结构,这是一种处理复杂数据结构的有效方式。 首先,树形结构在数据库中通常表示为层级数据,例如组织结构、目录树或类别层次。在Hibernate中,映射这种结构的关键在于...
它允许直接将数据源(如数据集、列表或实体)绑定到Treeview,自动根据数据结构生成树形结构,简化了开发过程。使用`BindingTreeView`,你可以省略手动创建和管理TreeNode的步骤,只需关注数据的准备和绑定。 总结...
"查"是查询节点,可以根据不同的条件(如id、父节点id等)从数据库中检索树形结构。 在Java中,我们可以使用JDBC或者ORM框架(如Hibernate、MyBatis)来与数据库交互。JDBC提供了一种低级别的数据库访问方式,需要...
### Dtree树形结构连接数据库的具体实现方法 #### 一、背景介绍 在现代Web开发中,树形结构是常用的数据展示方式之一,特别是在管理后台系统中用来展示组织架构、目录结构等。本文将详细介绍如何在JSP环境中利用...
在构建树形结构时,通常会使用递归方法或迭代方式从数据库中获取所有菜单项,并根据它们的父子关系构建树。以下是一个简单的示例: ```java public List<Menu> getMenuTree() { Session session = sessionFactory....
1. **定义数据库实体类**:定义一个表示数据库中树形结构节点的实体类。 ```java public class Terrain { private long terrainId; private long fatherTerrainId; private String terrainName; // getter...
RichFaces 自动构建树实现是基于 Java 语言和 RichFaces 框架的树形结构实现。树形结构在软件系统中非常常见,包括树形菜单的构建、基于二叉树的二分查找法等等。RichFaces 提供了树形结构接口和默认的实现类,我们...
本文详细介绍了Java数据封装树形结构代码实例的实现过程,涵盖了实体类的定义、数据封装、树形结构的构建、递归算法、Comparable接口、List接口、Date类和StringUtils类等多个知识点,对大家的学习或者工作具有一定...
在Java编程中,构建无限级分类树形结构是一项常见的任务,尤其在数据管理、文件系统或者网站导航等场景中。本教程将介绍如何利用Java来实现这种功能,并结合MySQL数据库进行数据存储,同时通过AJAX技术实现页面的...
java 实现构造无限层级树形菜单可以帮助我们快速构建复杂的树形结构,并且可以根据需要进行自适应的调整。该技术可以应用于各种场景,如菜单系统、目录树、组织结构等。通过使用递归构造树形结构,我们可以快速构建...
在Java编程中,构建树形...总结来说,构建Java中的树形菜单需要定义一个菜单实体类,实现排序逻辑,然后通过递归方法构建树形结构。这个过程涉及到数据的获取、排序以及树形结构的构建,是Java Web开发中常见的操作。
1. **二叉树**:二叉树是一种特殊的树形数据结构,其中每个节点最多有两个子节点,通常分为左子节点和右子节点。二叉树有多种类型,如完全二叉树、满二叉树和平衡二叉树(如AVL树和红黑树)。在C++中,二叉树可以...
在IT开发领域中,jsTree是一个流行的基于jQuery的插件,用于在网页中渲染树形结构的数据。它常被用于表示层次性的信息,如菜单、分类、权限结构等,具有丰富的API和可定制性,支持无限级树形结构的展开和收起。 ###...