Java递归实现树形结构

该文章介绍了如何在Java中使用递归方法构建树形结构,特别是针对部门分类。首先定义了一个Department类,包含了部门ID、名称等属性以及子部门列表。接着在实现类中,提供了一个`listTree`方法来获取所有根部门及它们的子部门,通过递归调用`findChildren`方法查找并添加子节点。

Java递归实现树形结构


1、数据准备

public class Department {

    @TableId(value = "dep_id", type = IdType.ASSIGN_ID)
    private  Integer depId;

    @TableField("dp_name")
    private  String dpName;

    @TableLogic
    @TableField(fill =FieldFill.INSERT)
    private Integer deletd;

    private  String information;

    @TableField("parent_id")
    private  Integer parentId;

    private  String created;

    private  String modified;

    @TableField(value = "creation_time",fill = FieldFill.INSERT)
    private Date creationTime;

    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
    private  Date updateTime;

    @TableField(exist = false)
    private List<Department> children;
    
    private  Integer number;

2、实现类

 /**
     * 查出所有菜单分类以及子分类,以树形结构组装起来
     *
     * @return
     */
    @Override
    public List<Department> listTree() {
        List<Department> arrayList = new ArrayList<>();
        List<Department> list = baseMapper.selectList(null);
        for (Department dep : list) {
            if (dep.getParentId() == 0) {
                arrayList.add(findChildren(dep, list));
            }
        }
        return arrayList;
    }

    //递归查找所有菜单的子菜单
    private Department findChildren(Department dep, List<Department> list) {
        for (Department deps : list) {
            if (dep.getDepId() == deps.getParentId()) {
                if (dep.getChildren() == null) {
                    dep.setChildren(new ArrayList<Department>());
                }
                dep.getChildren().add(findChildren(deps, list));
            }
        }
        return dep;
    }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值