`
KingwarLuo
  • 浏览: 12828 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

无限级树数据结构构造

    博客分类:
  • Java
 
阅读更多

目前做机构管理这块,需要构造无限级树代码。

 

根节点为null,传进来数据集 List

构造根节点:

List<SysOrgBean> retList = new ArrayList<SysOrgBean>();
		for (SysOrgBean bean : beanList) {
			if(StringUtil.isEmpty(bean.getParentOrgId())){
				List<SysOrgBean> children = getChildren(beanList,bean.getOrgId());
				if(null != children && !children.isEmpty()){
					bean.setChildren(children);
					for (SysOrgBean sysOrgBean : children) {
						buildNode(sysOrgBean, beanList);
					}
				}
				retList.add(bean);
			}
		}
		return retList;

getChildren获取节点子集,buildNode构造子节点。

public static void buildNode(SysOrgBean sysOrgBean, List<SysOrgBean> beanList){
	List<SysOrgBean> children = getChildren(beanList, sysOrgBean.getOrgId());
		if (null != children && !children.isEmpty()) {  
		sysOrgBean.setChildren(children);  
            for (SysOrgBean child : children) {
                buildNode(child, beanList);
            }  
        }
}

 

public static List<SysOrgBean> getChildren(List<SysOrgBean> beanList, String parentOrgId){
	List<SysOrgBean> childList = new ArrayList<SysOrgBean>();
	for (SysOrgBean sysOrgBean : beanList) {
		if(!StringUtil.isEmpty(sysOrgBean.getParentOrgId()) && sysOrgBean.getParentOrgId().equals(parentOrgId)){
			childList.add(sysOrgBean);
			//beanList.remove(sysOrgBean);
		}
	}
	return childList;
}

 

由于用hibernate,需要将数据实体转换称业务实体,够造如下方法:

public static List<SysOrgBean> parse(List<SysOrg> orgList){
		List<SysOrgBean> beanList = null;  
        if(null != orgList && !orgList.isEmpty()){  
        	beanList = new ArrayList<SysOrgBean>();  
            for(SysOrg org : orgList){
            	SysOrgBean bean = parse(org);  
                if(null != bean){  
                	beanList.add(bean);  
                }  
            }  
        }  
        return beanList;  
	}
	
	public static SysOrgBean parse(SysOrg org){
		if(org != null){
			SysOrgBean orgBean = new SysOrgBean();
			orgBean.setOrgId(org.getOrgId());
			orgBean.setParentOrgId(org.getParentOrgId());
			orgBean.setOrgName(org.getOrgName());
			orgBean.setOrgLevel(org.getOrgLevel());
			orgBean.setSortNo(org.getSortNo());
			return orgBean;
		}
		return null;
	}

 

分享到:
评论

相关推荐

    dTree 生成无限级树形菜单

    `dTree`的构造函数接受两个参数:第一个参数是树的标识符,第二个参数是树的数据。数据格式通常是键值对,其中键包括`id`(节点ID)、`text`(节点文本)和`children`(子节点数组)等。 为了使树形菜单具有交互性...

    多叉树结合JavaScript树形控件实现无限级树形菜单(一种构建多级有序树形结构JSON(或XML)数据源的方法).pdf

    实现这一目标的关键在于设计一个算法,能够从数据库读取数据,构建一个多叉树的数据结构,并将其序列化为JSON。在示例代码中,`branchTree.html`是一个使用Ext JS创建的树形控件,它配置了一个TreeLoader,指向`...

    无限级树(Java递归)

    递归作为算法设计中的一种基本方法,非常适合处理具有自相似特性的数据结构,如树和图。 - **应用场景**:无限级树形结构常用于表示多层嵌套的关系,如文件系统、产品分类、组织架构等。在Web开发中,这种结构可以...

    [其他类别]无限级树形菜单(Sql数据库)_mytree.zip

    在IT领域,尤其是在Web开发中,无限级树形菜单是一种常见的数据结构,常用于网站导航、组织层级结构或展示具有嵌套关系的数据。本案例中,"无限级树形菜单(Sql数据库)_mytree.zip" 提供了实现这种功能的源码,可能是...

    c#无限加载的树形DEMO

    本示例“c#无限加载的树形DEMO”聚焦于如何在C#环境中实现无限级树形结构的动态加载。这种技术在很多场景下都非常有用,例如在文件系统、组织结构、数据库层次关系的展示等。 无限级树形加载通常涉及递归或迭代的...

    JAVA无限级树,元限循环

    在Java编程中,构建无限级树结构是一种常见的需求,特别是在数据结构、数据库操作以及图形用户界面(GUI)设计中。无限级树允许我们表示层次化的数据,如组织结构、文件系统或者目录结构。这里我们将深入探讨如何在...

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

    5. 数据结构与算法(构建树形结构) 6. 前后端交互(RESTful API) 7. AJAX异步刷新 8. 前端树形菜单渲染 通过以上步骤,你可以实现一个能够连接MySQL数据库,支持无限级分类的Java树形菜单,并且利用AJAX实现页面...

    Java 开发JSP无限级分类目录树-sorttree项目源码

    在计算机科学中,树是一种非线性数据结构,由节点(或称为顶点)以及连接这些节点的边构成。在无限级分类目录树中,每个节点可以有任意数量的子节点,这使得它可以表示任意深度的层次结构。 1. 数据模型设计: ...

    Java 无限极 树结构

    在Java编程中,树结构是一种常见的数据结构,用于表示具有层次关系的数据。无限极树结构则是指树的层级没有限制,可以无限扩展。这种结构在实际应用中非常广泛,例如组织架构、文件系统、菜单导航等场景。下面将详细...

    C# winform TtreeView控件的无限级数据绑定

    在本教程中,我们将探讨如何在VS2008环境下,结合SQLServer2000数据库,实现TreeView控件的无限级数据绑定。 首先,我们来看`TtreeView`(可能是打字错误,应为`TreeView`)控件的基本使用。TreeView控件由节点...

    androidrecyclerView多层级无限层级列表折叠树

    在实现多层级列表时,我们同样需要一个自定义的Adapter来处理不同层级的数据结构。 1. **数据模型设计**: 我们需要一个数据模型类,表示树形结构的节点。这个类通常包含两个主要属性:一个是存储节点数据,另一个...

    无限级可刷新Js树型菜单

    实现这种无限级可刷新Js树型菜单通常涉及的技术点包括DOM操作、事件监听、数据结构(如链表或树)以及可能的异步加载策略(如Ajax)。JavaScript的面向对象编程和函数式编程特性也可能在实现过程中发挥作用,例如...

    ThinkPHP新闻无限级分类

    新闻无限级分类通常涉及到树形数据结构的实现,如多级菜单或分类目录。在数据库设计中,这可以通过自引用的方式实现,即新闻分类表中有一个字段指向自身,表示父类别与子类别的关系。常见的实现方式有Adjacency List...

    无限级联动菜单(AJAX源码)

    - **AJAX请求**:根据当前选中的值,构造请求参数,如URL参数或POST数据,发送到服务器。 - **处理响应**:接收到服务器返回的数据后,解析数据(可能是JSON格式),生成新的HTML选项,并插入到对应的选择器中。 ...

    实现基于 Ajax 的无限级菜单源代码

    ### 实现基于Ajax的无限级菜单源代码解析与关键技术点 #### 一、引言 在Web开发领域,Ajax技术的应用极大地提升了用户体验,使得页面无需...对于需要实现复杂菜单结构的Web应用而言,这是一个非常值得参考的设计方案。

    c#树形菜单

    1. **数据源**:通常,树形菜单的数据源可能来自数据库、XML文件或其他数据结构。可以先将这些数据转换成易于处理的格式(如上述的`TreeNodeData`列表),然后调用`BuildTree`方法构建树形菜单。 六、自定义样式 1...

    php 无限级分类,超级简单的无限级分类,支持输出树状图

    在PHP中,无限级分类是一种常见...总结,这个PHP类提供了一种简单有效的方法来处理无限级分类数据,通过递归和循环来构建和输出树状结构。它对于处理有层级关系的数据非常实用,且代码简洁易懂,适合在各种项目中复用。

    php 无限级缓存的类的扩展

    1. **无限级缓存**:无限级缓存是指能够支持任意层数的数据结构存储方式,通常用于表示具有层次关系的数据。 2. **分类缓存**:指根据一定的条件将数据分门别类地存储起来,以便后续快速访问。在本例中,主要涉及...

    php 无限级 SelectTree 类

    这个类主要用于处理具有层级关系的数据,如组织结构、目录树或分类等,将它们转换成易于用户选择的树状结构。以下是这个类的一些关键知识点和功能的详细解释: 1. **类属性**: - `$result`:存储结果集,通常是...

Global site tag (gtag.js) - Google Analytics