`

递归组装树

阅读更多
/**
	 * 装成树
	 * @param regions
	 * @return
	 */
	//获取树的集合
	public List<EasyUITreeDTO> toEasyUITree(List<Region> regions) {
		// TODO Auto-generated method stub
		//实体类集合转化为dtos
		List<RegionDTO> regionsdto=toDTOs(regions);
		//将dtos装入EasyUITreeDTOs
		List<EasyUITreeDTO> regionList=this.toEasyUITreeDTO(regionsdto);
		List<EasyUITreeDTO> roots = new ArrayList<EasyUITreeDTO>();
		//找到树的根节点
		for (EasyUITreeDTO regionTree : regionList) {
			String str=regionTree.getPid();
				if(StringUtils.isEmpty(str)){
					//获取父节点下的子节点
					regionTree.setChildren(getChildrenNode(regionTree.getId(),regionList));
					regionTree.setState("open");
					regionTree.setIconCls("icon-coalmine");
					roots.add(regionTree);
				}
			}
		return roots;
	}
	/**
	 * 获取子节点
	 * @param id
	 * @param regionList
	 * @return
	 */
	private List<EasyUITreeDTO> getChildrenNode(String id, List<EasyUITreeDTO> regionList) {
		// TODO Auto-generated method stub
		List<EasyUITreeDTO> newTreeList=new ArrayList<EasyUITreeDTO>();
		for (EasyUITreeDTO regionTreeDTO : regionList) {
			if( StringUtils.isEmpty(regionTreeDTO.getPid())){
				continue;
			}
			//这是一个子节点
			if(id.equals(regionTreeDTO.getPid())){
				//递归获取子节点下的子节点
				regionTreeDTO.setChildren(getChildrenNode(regionTreeDTO.getId(),regionList));
				newTreeList.add(regionTreeDTO);
			}
		}
		return newTreeList;
	}
	
	/**
	 * dtos转化为EasyUITreeDTOs
	 * @param regionsdto
	 * @return
	 */
	private List<EasyUITreeDTO> toEasyUITreeDTO(List<RegionDTO> regionsdto) {
		// TODO Auto-generated method stub
		List<EasyUITreeDTO> list=new ArrayList<EasyUITreeDTO>();
		for (RegionDTO regionDTO : regionsdto) {
			EasyUITreeDTO result = new EasyUITreeDTO();
			result.setId(regionDTO.getId());
			result.setText(regionDTO.getName());
			result.setPid(regionDTO.getUpRegionId());
			list.add(result);
		}
		return list;
	}

 

分享到:
评论

相关推荐

    zTree后台组装树结构java代码

    以上就是关于"zTree后台组装树结构java代码"的主题知识,包括了zTree的使用、Java与MySQL的交互、递归算法构建树、Spring JDBC等内容。理解并掌握这些知识点,能够帮助开发者高效地构建基于zTree的树形界面。

    java组装树形结构demo.7z

    在组装树形结构时,传统的做法通常涉及递归或自循环,这在处理大量数据时可能会导致性能下降,因为递归会增加调用栈的深度,而自循环则可能导致大量的重复计算。本示例提出的技巧是使用双层循环,这种方法可能更为...

    java树形结构递归查询

    * 组装树 * * @param categoryTreeDTO * @param allList * @param remainRecursionCount 剩余递归次数 * @return */ public CategoryTreeDTO assembleTree(CategoryTreeDTO categoryTreeDTO, List...

    利用JDK8 stream filter遍历组装树

    * 递归查询子节点. * * @param root 根节点. * @param all 所有节点. * @return 根节点信息. */ private List&lt;Menu&gt; getChildrens(Menu root, List&lt;Menu&gt; all) { List&lt;Menu&gt; children = all.stream().filter...

    产品自主组装树形结构CSS实现(手机、电脑自适应) 插件版

    在IT行业中,构建一个产品自主组装的树形结构是提高用户体验和交互效率的重要方式,尤其在电子产品销售领域,用户可以根据自身需求自由选择组件,形成定制化的产品。本话题聚焦于如何利用CSS技术来实现这样的功能,...

    thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法

    在提供的代码中,categoryTree函数被定义为私有函数,它递归地调用自身来获取每个子栏目的信息,并将其组装成一个树形结构数组。函数接收parentid和level参数,其中parentid用来指定当前的父级栏目ID,level用于追踪...

    list实现多层级树形

    实现多层级树形结构的关键在于递归。当处理一个节点时,我们需要检查它是否有子节点,如果有,则将子节点列表添加到当前节点的列表中。这可以通过遍历列表并递归处理每个元素来实现。以下是一个简单的示例: ```...

    用递归的方法绑定xml

    递归是编程中的一个强大概念,它允许函数调用自身来解决复杂的问题,特别适合处理层次结构的数据,比如树形结构或XML文档。 标题"用递归的方法绑定xml"意味着我们将探讨如何通过递归函数将数据库中的层级数据转换成...

    三级菜单树的组装与遍历显示

    总结来说,"三级菜单树的组装与遍历显示"是一个涉及数据结构、递归算法和UI交互的问题。理解并掌握这部分知识对于任何进行UI开发的程序员来说都是非常重要的。通过合理的数据组织和算法设计,我们可以有效地处理和...

    字符串反解析成树结构

    4. 递归算法:构建树结构的过程通常涉及递归,从根节点开始,逐级添加子节点。 5. 数据映射:使用映射数据结构(如`Map`)将字符串数据映射到对象属性。 6. 性能优化:考虑如何提高数据查找和构建树的效率。 掌握...

    树,菜单树

    在后台组装多层次的菜单树时,通常需要遍历数据库中的菜单数据,根据父子关系构建出树形结构。这可以通过递归算法实现,例如深度优先搜索(DFS)或广度优先搜索(BFS)。生成的数据结构可以是JSON格式,然后传递给...

    Oracle通过递归查询父子兄弟节点方法示例

    在Oracle数据库中,递归查询是一种强大的工具,用于处理层级数据结构,如组织结构、文件系统或树形关系。在本篇文章中,我们将探讨如何利用递归查询来查找父子兄弟节点,这对于理解和处理这类关系非常关键。 首先,...

    部门树,使用ssi框架搭建的部门树功能

    在本项目中,Spring负责管理对象的生命周期和依赖关系,使得我们可以灵活地配置和组装组件,便于实现部门树的各个模块,如部门服务、部门 Dao 和实体类等。 2. **Struts框架**:Struts 是一个 MVC(Model-View-...

    DiGui.rar_digui_subset

    在描述中提到的“通过类组装一个从根级到最后一个子集的现实”,这可能是指一个类(在面向对象编程中)被设计来表示一个树结构,并通过递归方法来遍历从根节点到所有叶子节点的所有可能子集。 在计算机科学中,子集...

    【数据结构】【b】线段树及其应用正文终稿.doc

    - **程序设计关键技术**:包括分治策略、递归和树形数据结构的实现。 - **个人设计实现**:每个团队成员负责不同的部分,如余灏然可能负责整体架构和核心算法,魏嘉负责测试和调试,张越负责用户界面和文档编写。 ...

    数据结构【b】线段树及其应用-毕业论文.doc

    测试与调试包括单元测试、组装测试和系统测试,确保线段树在各种情况下的正确性。 最后,课题总结会评估项目成果,讨论团队合作的经验和教训,以及可能的改进方向。线段树作为一种强大的数据结构,其理解和掌握对于...

    HonsRecursiveSolverGE:生成递归 C 程序来解决给定的问题

    从图片到基因编程的程序 遗传编程 (GP) 是一种强大且广泛使用的工具,可用于演化复杂程序。 在GP的上下文中,递归程序... 可以使用 GUI 完全控制应用程序 - 可以组装和处理树。 在trees 文件夹中可以找到一些示例树。

    【数据结构】【B】线段树及其应用.doc

    测试与调试阶段,每个组员应独立测试自己的部分,并进行组装和系统测试,确保整个线段树在各种情况下的正确性。系统运行后,需要评估其性能和稳定性,并进行优化。 课题总结时,应对线段树的设计、实现和测试进行...

    PHP生成树的方法

    `getAll`函数是一个关键的递归方法,用于生成树的完整表示。它以指定的ID(默认为0,即根节点)作为起点,递归地收集并格式化所有子节点,生成一个层次清晰的字符串。 在实际应用中,这些方法可以被用来动态构建和...

    无限级分类(数组方法)

    无限级分类意味着一个类别可以有任意数量的子类别,这些子类别也可以有子类别,形成一个无限递归的树形结构。在PHP中,我们可以利用递归函数或者迭代方法来处理这种结构。 在“无限级分类(数组方法)”这个主题中...

Global site tag (gtag.js) - Google Analytics