`
y806839048
  • 浏览: 1119010 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

树形结构list构建(树形实体)

 
阅读更多

树形结构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

 */

分享到:
评论

相关推荐

    hibernate自身关联一对多实例(树形结构)

    本文将深入探讨“Hibernate自身关联一对多实例(树形结构)”这一主题,这在构建具有层次结构的数据模型时尤其常见,例如组织结构、地区树或者商品分类等。 首先,我们需要理解Hibernate的核心概念。Hibernate允许...

    C#构建树形结构数据(全部构建,查找构建)

    在C#中构建树形结构数据有多种方法,本文将介绍使用抽象的公用实体TreeObject来构建树形结构数据的方法。首先,我们定义一个抽象的公用实体TreeObject,以保证后续涉及到的List转化树形JSON。TreeObject中包含四个...

    java的树形菜单。

    在本场景中,我们讨论的是如何利用Hibernate框架来构建一个基于数据库的树形结构菜单。Hibernate是一个强大的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互,使得开发人员能够以面向对象的方式...

    一次集合遍历实现树形结构 - server

    在IT领域,构建树形结构的数据模型是一种常见的需求,特别是在服务器端开发中,例如Spring Boot应用。本主题探讨的是如何通过一次集合遍历来实现树形结构,这在处理层级数据,如组织架构、文件系统或者菜单导航时...

    Dtree树形结构连接数据库的具体实现代码

    ### Dtree树形结构连接数据库的具体实现方法 #### 一、背景介绍 在现代Web开发中,树形结构是常用的数据展示方式之一,特别是在管理后台系统中用来展示组织架构、目录结构等。本文将详细介绍如何在JSP环境中利用...

    jpa单表递归树形结构实现

    在本示例中,我们将探讨如何使用Spring JPA来实现单表递归树形结构。 首先,我们需要理解递归树形结构。在数据库中,树形结构通常通过自关联来表示,即一个表的某个字段引用该表自身,形成一个层级关系。对于单表...

    strut2树形菜单

    1. **定义数据库实体类**:定义一个表示数据库中树形结构节点的实体类。 ```java public class Terrain { private long terrainId; private long fatherTerrainId; private String terrainName; // getter...

    java实现无限级分类树形,连接mysql数据库

    在Java编程中,构建无限级分类树形结构是一项常见的任务,尤其在数据管理、文件系统或者网站导航等场景中。本教程将介绍如何利用Java来实现这种功能,并结合MySQL数据库进行数据存储,同时通过AJAX技术实现页面的...

    Java构建树形菜单的实例代码(支持多级菜单)

    在Java编程中,构建树形...总结来说,构建Java中的树形菜单需要定义一个菜单实体类,实现排序逻辑,然后通过递归方法构建树形结构。这个过程涉及到数据的获取、排序以及树形结构的构建,是Java Web开发中常见的操作。

    Java面试题(20211007014657).pdf

    9. **XML解析**:Java可以通过SAX(Simple API for XML)进行事件驱动的解析,DOM(Document Object Model)则是整个XML文档加载到内存形成树形结构。 10. **数据库查询**:Java通过JDBC(Java Database ...

    运用递归生成树形结构 Treeview

    它允许直接将数据源(如数据集、列表或实体)绑定到Treeview,自动根据数据结构生成树形结构,简化了开发过程。使用`BindingTreeView`,你可以省略手动创建和管理TreeNode的步骤,只需关注数据的准备和绑定。 总结...

    nltk-2.0.4.win32.zip(NLP工具包)

    7. **语法分析(Parsing)**:nltk可以构建和解析句子的语法树,揭示句子的结构和关系。 8. **语料库(Corpus)**:nltk包含多个预处理好的语料库,如Brown语料库、Pittsburgh语料库等,这些语料库可用于训练和测试...

    java实现构造无限层级树形菜单

    java 实现构造无限层级树形菜单可以帮助我们快速构建复杂的树形结构,并且可以根据需要进行自适应的调整。该技术可以应用于各种场景,如菜单系统、目录树、组织结构等。通过使用递归构造树形结构,我们可以快速构建...

    10第10章 图论模型(Python 程序及数据).rar

    - **最小生成树** (Minimum Spanning Tree, MST): 如Prim算法、Kruskal算法,用于找到边权重总和最小的树形子图,连接所有顶点。 - **拓扑排序** (Topological Sorting): 对有向无环图(DAG)进行排序,使得对于每条...

    树形菜单的实现,有增删改查方法的实现。

    "查"是查询节点,可以根据不同的条件(如id、父节点id等)从数据库中检索树形结构。 在Java中,我们可以使用JDBC或者ORM框架(如Hibernate、MyBatis)来与数据库交互。JDBC提供了一种低级别的数据库访问方式,需要...

    Hibernate映射树形结构

    本篇文章将深入探讨如何在Hibernate中映射树形结构,这是一种处理复杂数据结构的有效方式。 首先,树形结构在数据库中通常表示为层级数据,例如组织结构、目录树或类别层次。在Hibernate中,映射这种结构的关键在于...

    计算机数据结构与算法常用英语词汇

    - **tree (树)**:层次结构,每个节点最多有一个父节点,但可以有任意数量的子节点。 - **graph (图)**:节点和边组成的集合,表示实体之间的关系。 掌握这些专业术语,不仅有助于深入理解计算机科学的核心概念,还...

    DevExpress之TreeList使用示例

    TreeList是DevExpress UI组件库中的一员,它是一个可自定义的网格视图,能够以树形结构显示数据。它的特点在于能够显示多列数据,并支持拖放操作、分页、排序、过滤以及多种编辑模式。 2. **复杂类型绑定** 在...

Global site tag (gtag.js) - Google Analytics