首页 > 编程语言 >Java后端项目实现无限级树 - 案例:部门树 - Department实体类

Java后端项目实现无限级树 - 案例:部门树 - Department实体类

时间:2024-02-08 17:44:15浏览次数:33  
标签:map parentDepartment 实体类 Java 级树 Department 部门 department deptTree

private List<Department> getDeptTree() {
    // 1. 一次性查询出所有数据,放到内存中,可以使用map  -  做缓存用
    // 2. 从所有数据中找出第一层级/顶级部门:这就是我们需要返回的数据
    // 3. 遍历所有部门只要不是第一层级的,找自己的上级,并将自己放入上级的children中
    //将所有的部门撞到map中  - 每次获取父部门都从这里获取
    List<Department> all = departmentMapper.findAll();
    Map<Long, Department> map = new HashMap<>();
    for (Department department : all) {
        map.put(department.getId(), department);
    }

    //前端需要得到的集合数据 - 部门树
    List<Department> deptTree = new ArrayList<>();
    for (Department department : all) { //循环置值
        if (department.getParentId() == null) {//顶级部门的情况
            deptTree.add(department);
        } else {//不是顶级部门的情况
            //1.想办法找到当前部门的 父部门
            Long parent_id = department.getParentId();
           
            //从上面的Map中去获取的 - 以前装进去的对象还是会存在
            Department parentDepartment = map.get(parent_id);
            if (parentDepartment != null) {  //防止空指针,过滤出错数据
                //2.将自己装到  父部门 的children中
                parentDepartment.getChildren().add(department);
            }
        }
    }
    return deptTree;
}

                        
参考链接:https://blog.csdn.net/2301_77829365/article/details/131818062

标签:map,parentDepartment,实体类,Java,级树,Department,部门,department,deptTree
From: https://www.cnblogs.com/JavaYuYin/p/18011977

相关文章

  • 如何使用graalvm为带有反射功能的java代码生成native image
    译自ConfigureNativeImagewiththeTracingAgentgraal官方文档,以下所有命令需要在linux环境下操作,graalvm也支持windows。要为使用Java反射、动态代理对象、JNI或类路径资源的Java应用程序构建本机可执行文件,应为native-image工具提供JSON格式的配置文件或在代......
  • java11下载安装
    https://www.oracle.com/in/java/technologies/javase/jdk11-archive-downloads.html https://jdk.java.net/java-se-ri/11-MR2 ......
  • java的SPI机制
    参考https://blog.csdn.net/qq_52423918/article/details/1309683071概念JavaSPI(ServiceProviderInterface)是Java官方提供的一种服务发现机制,它允许在运行时动态地加载实现特定接口的类,而不需要在代码中显式地指定该类,从而实现解耦和灵活性。2实现原理JavaSPI的实现原......
  • Java中的审批流:BPMN与Flowable
    最近闲来无事,研究了一下工作流框架。找到了一条可以实现审批流程的技术方向。我选择的后端工作流框架是Flowable,看文档应该是属于Activity的一个分支吧。使用教程文档地址在:GettingStarted·FlowableOpenSourceDocumentation(用百度/必应搜索,搜到的是Flowable的官网,最后这个......
  • Java反射(learning)
    Java-reflectionJava反射(Reflection)是Java语言的一个特性,它允许程序在运行时检查和修改内部类的行为。通过反射,可以获取类的构造器、方法、字段等成员的信息,并且可以动态地创建对象、调用方法、访问和修改字段。Java反射主要涉及到以下几个类:java.lang.Class:代表一个类,每个......
  • 解析Sermant热插拔能力:服务运行时动态挂载JavaAgent和插件
    本文分享自华为云社区《服务运行时动态挂载JavaAgent和插件——Sermant热插拔能力解析》,作者:华为云高级软件工程师栾文飞一、概述Sermant是基于Java字节码增强技术的无代理服务网格,其利用Java字节码增强技术,为宿主应用程序提供服务治理功能,以解决大规模微服务场景中的服务治理......
  • 深入理解 Java 循环结构:while、do while、for 和 for-each 循环
    Java循环循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。JavaWhile循环while循环会循环执行一个代码块,只要指定的条件为真:语法while(condition){//要执行的代码块}在下面的示例中,只要变量(i)小于5,循环中的代码将......
  • Java 中的Collections工具类
    Collections工具类java.util.Collection集合接口java.util.Collections集合工具类,方便集合操作对List集合中元素排序,需要保证List集合中元素实现了Comparable接口Collections.synchronizedList(list);设置成线程安全的Collections.sort(wuGuis);进行排序importjava......
  • javascript 下载 application/octet-stream 文件
    functiondownloadFile(id){varxhr=newXMLHttpRequest();xhr.open('POST','https://localhost/api/app/isp-detection/'+id+'/download');xhr.responseType='blob';xhr.setRequestHeader('Cont......
  • 编程新手必学:Java运算符详解
    编程新手必学:Java运算符详解编程,这种强大的艺术形式,给我们带来了无穷的可能性。就像数学中的加减乘除,程序设计中也有一种类似的工具:运算符。作为一种编程语言,Java提供了一系列的运算符来执行各种基础和复杂的操作。在本文中,我将尝试解释Java中的各种运算符,并提供一些代码示例来说......