龙空技术网

java实现树形结构数据

极客丶小飞 106

前言:

现在我们对“树形结构数据处理”大概比较关怀,我们都需要分析一些“树形结构数据处理”的相关资讯。那么小编也在网摘上收集了一些关于“树形结构数据处理””的相关内容,希望大家能喜欢,看官们一起来学习一下吧!

第一种: 直接获取树形数据

注意:

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 返回即可;

标签: #树形结构数据处理