前言:
现在我们对“树形结构数据处理”大概比较关怀,我们都需要分析一些“树形结构数据处理”的相关资讯。那么小编也在网摘上收集了一些关于“树形结构数据处理””的相关内容,希望大家能喜欢,看官们一起来学习一下吧!第一种: 直接获取树形数据
注意:
1、我这里实现的是一个主部门下的所有子部门(子部门下的子部门),也就是一个主部门下的所有部门;最后返回最大部门id的数据即可;
2、如果要实现多个主部门下的子部门树,这里将返回结果进行处理,将没有父级部门的集合返回,此时返回的结果就是所有主部门的树;
1、表结构字段:(id,name,partent_id - 父级id对应这id字段)
2、写好当前表的实体
3、扩展实体VO
/*** entity 对应着表的实体* 继承着对应的表实体**/@Datapublic class FwcEmpdeptVo extends entity{ /** * 子级节点 **/ private List<FwcEmpdeptVo> children = new ArrayList<>();}
4、service实现树节点查询
/*** 代码中的entity对应着表实体**/public FwcEmpdeptVo getDeptListTree() { //存储所有的部门 Map<String, FwcEmpdeptVo> deptTree = new HashMap<>(); //查询所有部门列表 List<entity> list = this.list(); for (entity deptItrm : list) { FwcEmpdeptVo fwcEmpdeptVo = new FwcEmpdeptVo(); BeanUtils.copyProperties(deptItrm, fwcEmpdeptVo); //将所有部门添加到 map 中 deptTree.put(deptItrm.getId(),fwcEmpdeptVo); } //将 list 置空,垃圾回收 list = null; deptTree.entrySet().forEach(item -> { //获取到当前节点 FwcEmpdeptVo dept = item.getValue(); //根据当前节点查询去map获取父级节点 FwcEmpdeptVo fwcEmpdeptVo = deptTree.get(dept.getParentId()); //判断是否有父级节点 if (fwcEmpdeptVo != null){ //给父级节点添加当前子 fwcEmpdeptVo.getChildren().add(dept); } }); //将最大的父节点返回(获取最大部门的id),就可以获取到最大部门下的所有部门节点,返回是树结构 return deptTree.get("1");}
5、controller调用此service方法,将树形结果返回就ok了
返回结果(简单的结果树显示,数据结构的话,就会是一个树结构):XXX公司 a部门 a1部门 b部门 c部门
注意:
如果要实现(此树结构):a公司 a1部门 a11部门 a12部门 b1部门 b11部门 c部门b公司 a1部门 b11部门 b1部门c公司
只需要在返回结果时,将没有父级部门的 list 返回即可;
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #树形结构数据处理