首页 > 其他分享 >递归调用生成部门的所有子部门

递归调用生成部门的所有子部门

时间:2024-08-08 20:07:29浏览次数:16  
标签:deptId 调用 String 递归 deptMap Dept 部门 put new

1、样例

public class DepartmentService {

    public static void main(String[] args) {

        Map<String, Dept> deptMap = new HashMap<>();
        deptMap.put("研发部", new Dept("研发部", "A公司"));
        deptMap.put("财务部", new Dept("财务部", "A公司"));
        deptMap.put("销售部", new Dept("销售部", "A公司"));
        deptMap.put("大数据产品线", new Dept("大数据产品线", "研发部"));
        deptMap.put("大数据开发工程师", new Dept("大数据开发工程师", "大数据产品线"));
        deptMap.put("硬件产品线", new Dept("硬件产品线", "研发部"));
        deptMap.put("游戏产品线", new Dept("游戏产品线", "研发部"));
        deptMap.put("数仓组", new Dept("数仓组", "大数据产品线"));
        deptMap.put("算法组", new Dept("算法组", "大数据产品线"));
        deptMap.put("算法工程师", new Dept("算法工程师", "算法组"));
        deptMap.put("模型组", new Dept("模型组", "游戏产品线"));
        deptMap.put("美工组", new Dept("美工组", "游戏产品线"));

        List<Dept> subDepts = getSubDepartments("研发部", deptMap);

        for (Dept dept : subDepts) {
            System.out.println(dept);
        }
    }


    /**
     * 递归获取子部门及其所有子级部门
     *
     * @param deptId 当前部门ID
     * @return 子部门集合
     */
    public static List<Dept> getSubDepartments(String deptId, Map<String, Dept> deptMap) {
        List<Dept> subDepts = new ArrayList<>();

        for (Dept dept : deptMap.values()) {
            if (dept.getParentDeptId().equals(deptId)) {
                subDepts.add(dept);
                // 递归调用,继续查找子部门的子部门
                subDepts.addAll(getSubDepartments(dept.getDeptId(), deptMap));
            }
        }

        return subDepts;
    }
}

class Dept {
    private String deptId;
    private String parentDeptId;

    public Dept(String deptId, String parentDeptId) {
        this.deptId = deptId;
        this.parentDeptId = parentDeptId;
    }

    public String getDeptId() {
        return deptId;
    }

    public String getParentDeptId() {
        return parentDeptId;
    }

    @Override
    public String toString() {
        return "Dept{" +
                "deptId='" + deptId + '\'' +
                ", parentDeptId='" + parentDeptId + '\'' +
                '}';
    }
}

 

标签:deptId,调用,String,递归,deptMap,Dept,部门,put,new
From: https://www.cnblogs.com/fengbonu/p/18349618

相关文章

  • 函数不声明也可调用
    目录一、编译试试二、说明原由编译器隐式声明三、总结四、源码一、编译试试1、main.c2、add.c3、编译执行二、说明原由编译器隐式声明gcc编译器在编译源文件时,遇到未声明的函数调用时,会根据函数调用时传入的参数类型隐式的为此源文件生成一个函数声明:函数参数......
  • 递归解决汉诺塔问题-个人见解(java)
    这里不提供题目汉诺塔问题是很多新手遇到的第一个难题,也许并不难,但是对于本人这种麻瓜来说第一次还是很难理解的,其中的思考过程一度让我崩溃不过也不是不能理解的,需要比较长的时间网络中有许多讲解视频,但是都大同小异,似乎都不是讲给麻瓜的,也可能是我们麻瓜太笨了,不过终究还是能......
  • 实时人脸换脸——基于C++与Onnxruntime调用GPU实现实时换脸
    1、概述1.1算法概述人脸换脸是一种使用人工智能技术来实时或离线地将视频中的人脸替换成另一张人脸的技术。近年来,随着深度学习技术的发展,这一领域取得了显著进展。常见的人脸换脸项目有:Deepfake:这是最著名的换脸算法之一,使用深度学习技术合成人脸图像,通常使用卷积神......
  • 递归思想以及晕递归的解决方案
    什么情况下可以用递归的思想一个问题可以被分为多个子问题,且子问题之间不冲突,并且多个子问题解决后,问题也被解决了。就可以用递归。递归的思路递归首先有一个返回条件,就是说函数肯定不能无限递归下去,那么就要有一个在问题规模较小的时候可以判断的结束条件。其次递归分为“超......
  • 二叉树的递归套路
    二叉树的递归套路二叉树结构二叉树是一个将数据组织成头尾相连的特殊链表,每一个数据单元与链表一样有一个指向其的指针,但与链表不同的是其可以有两个指向其他单元的指针,分别是其左孩子与右孩子。采用该这种结构,最终数据的呈现形式会与“链”不一样,而呈现出了一种树的结构。对......
  • Debug:调用MIG IP核
    MIGIP核功能:        MIGIP核主要用于帮助设计人员轻松地建立各种类型的存储器接口,包括DDR(DoubleDataRate)SDRAM(同步动态随机存取存储器)、DDR2、DDR3、DDR4等。问题描述        当我们遇到了如图所示的TheConfigurationPinPUDC_Bisusedforallthe......
  • 如何把Connection 封装到工具类里面 调用工具类方法实现 增删改查操作 java JDBC
    如何把Connection封装到工具类里面调用工具类方法实现增删改查操作javaJDBC使用数据库连接池以HikariCP为例在JDBC中,使用数据库连接池是一个常见的做法,以提高数据库操作的效率和性能。连接池管理着一组数据库连接,这些连接可以被重用而不是每次需要时都创建新的连接。......
  • 如何把Connection 封装到工具类里面 调用工具类方法实现 增删改查操作 java JDBC使用
    如何把Connection封装到工具类里面调用工具类方法实现增删改查操作javaJDBC使用C3P0数据库连接池答:当使用C3P0作为数据库连接池时,你可以按照类似的模式来配置和使用它。以下是一个示例,展示了如何在Java项目中配置C3P0连接池,并创建一个工具类来管理数据库连接和执行基本的......
  • 成员方法调用的细节
    1publicclassshuzu03{2publicstaticvoidmain(String[]args){345AAa=newAA();6int[]res=a.getSumAndSub(1,4);7System.out.println("和="+res[0]);8System.out.println("差="+......
  • 趣味Python游戏编程:第3章 递归函数的威力:扫雷
    趣味Python游戏编程:第3章递归函数的威力:扫雷在第2章中,我们制作了一个拼图游戏,玩家通过鼠标操作图片块移动。本章设计一款扫雷游戏,玩法是在一个方块阵列中随机埋设一定数量的地雷,然后由玩家逐个打开方块,并以排除所有地雷为最终游戏目标。如果玩家打开的方块中有地雷,则游戏......