java实现树形结构数据

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

1、我这里实现的是一个主部门下的所有子部门(子部门下的子部门),也就是一个主部门下的所有部门;最后返回最大部门id的数据即可;
2、如果要实现多个主部门下的子部门树,这里将返回结果进行处理,将没有父级部门的集合返回,此时返回的结果就是所有主部门的树;

1、表结构字段:(id,name,partent_id - 父级id对应这id字段)
2、写好当前表的实体
3、扩展实体VO

/**
*	entity 对应着表的实体
*	继承着对应的表实体
**/
@Data
public 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 返回即可;

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈极客小飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值