java 二级分类的树状结构 不用递归_java中代替递归树形结构-程序员宅基地

技术标签: spring  spring boot  java  spring cloud  

目的

返回前端特定的格式 实现特定效果 例如

需要的数据结构

 实现方法与思路

我们需要一级分类和二级分类 在表的设计 一般都是(具体业务具体分析)

 所以 在一级分类中嵌套二级分类 就需要子类parentid 和  父类 id 相等 思路就在

利用嵌套循环 遍历一级分类后 在遍历二级分类 把二级分类封装到一级分类

代码 

dto类  父类

 子类

 serivce 实现

 

 

 最后swagger测试 就可以了


代码详细

    public List<oneSubject> queryTree() {
        //查询出所有一级分类
        QueryWrapper<CourseCategory> wrapper1= new QueryWrapper<>();
        wrapper1.eq("parentid","1");
        List<CourseCategory> oneSuject = baseMapper.selectList(wrapper1);
        //查询出所有二级分类
        QueryWrapper<CourseCategory> wrapper2= new QueryWrapper<>();
        wrapper2.ne("parentid","1");
        List<CourseCategory> twoSuject = baseMapper.selectList(wrapper2);
        //创建最终数据集合
        List<oneSubject> finallyCourse = new ArrayList<>();
        // 查询出所有一级分类的对象 获取每个对象的id
        // 对比二级分类 的parentid  id  相同就是一个分类
        for (int i = 0; i < oneSuject.size(); i++) {
            // 查询一级分类中  每个对象
            CourseCategory courseCategory = oneSuject.get(i);
            //创建对象 存储 一级分类对象
            oneSubject oneSubject = new oneSubject();
            // 类型转换 把 CourseCategory 转换成 oneSubject
            BeanUtils.copyProperties(courseCategory,oneSubject);
            finallyCourse.add(oneSubject);
//           遍历二级目录
            //创建二级分类集合 存二级分类数据
            List<TwoSubject> twoSubjects2 = new ArrayList<>();
            // 遍历二级分类
            for (int j = 0; j < twoSuject.size(); j++) {
                    //拿出二级分类对象
                CourseCategory courseCategory1 = twoSuject.get(j);
                if (courseCategory1.getParentid().equals(courseCategory.getId())){
                    TwoSubject twoSubject = new TwoSubject();
                    BeanUtils.copyProperties(courseCategory1,twoSubject);
                    twoSubjects2.add(twoSubject);
                }
            }
            oneSubject.setChildren(twoSubjects2);
        }
        return finallyCourse;
    }

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_62927851/article/details/129148864

智能推荐

java获取cpu、内存、硬盘信息_如何用java调用电脑的cpu属性-程序员宅基地

文章浏览阅读4.9k次。摘要java获取cpu、内存、硬盘信息1 下载安装sigar-1.6.4.zip 使用java自带的包获取系统数据,容易找不到包,尤其是内存信息不够准确,所以选择使用sigar获取系统信息。 下载地址:http://sourceforge.net/projects/sigar/files/latest/download?source=files 解压压缩包,将lib下si_如何用java调用电脑的cpu属性

kmeans中的k的含义_《K-means》知识点与思考-程序员宅基地

文章浏览阅读1.4k次。一、K-means概述K-means方法是非监督学习(Unsupervised learning)中的一种,非监督学习仍然需要数据,但是这些数据无需标签。K-means是一种常见的聚类算法,所谓聚类,即把相似的物体聚集在一起,用于发现数据的规律或模式。聚类可以用于用户分群、图像分割等方面。K-means中的K代表将数据集分为K个类。二、K-means算法K-means的中心思想与监督学习中的kNN..._k-means k是什么

sysbench基准测试(2)——oltp.lua测试-程序员宅基地

文章浏览阅读298次。前面知道sysbench基准测试的主要步骤为:prepare(准备数据集)→ run(运行测试)→ cleanup(清除数据集)这一节介绍oltp.lua测试。oltp基准测试模拟了一个简单的事物处理系统的工作负载。①、准备数据集(使用test数据库,用户名root,密码123456,表数目8,每张表记录10万,测试oltp.lua):[root@loc..._sysbench oltp.lua

小米发布会:雷军成长故事与创新壮举,AI大模型技术引领未来,雷军探索之路之从创业波折到小米AI领航,成就高端化传奇!_雷军小米创新之路-程序员宅基地

文章浏览阅读541次,点赞4次,收藏2次。小米发布会展现了雷军的成长历程和小米的创新之路。从大学时代的努力到创业的失败,再到小米的高端化探索,雷军不断克服挑战,坚持创新。通过与团队的沟通和坚持高端化品牌战略,小米终于找到了自己的定位。同时,小米对大模型AI技术的探索也显示出其在技术领域的前瞻性。无论是产品创新还是技术探索,小米都在不断成长,展现出强大的发展潜力。_雷军小米创新之路

Java集成ElasticSearch_java集成es-程序员宅基地

文章浏览阅读925次。Java集成ElasticSearch,包含:ES客户端依赖的引入,创建客户端,ES索引管理,ES管道管理,ES新增、修改、删除、查询数据。_java集成es

Win10无线投屏功能安装失败解决办法_笔记本电脑无线投屏下载失败怎么办-程序员宅基地

文章浏览阅读4.7k次。搜索无线投屏安装即可大多数可能是关闭了win10的更新功能必须要开启win10的更新功能才能够下载对应的组件然后输入找到开启再次下载即可如果还不行的话可以换网络(手机热点)、重启等。_笔记本电脑无线投屏下载失败怎么办

随便推点

百度地图的基本使用_百度地图用途-程序员宅基地

文章浏览阅读222次。前言随着移动互联网的急速发展,对位置服务的需求越来越强烈,如美团、滴滴、共享单车等等一系列的互联网应用都是基于位置提供服务的。国内两大地图提供商百度地图、高德地图不仅仅在导航等应用提供基础的服务,还对外提供一些开放的位置服务的API,开发者可以利用这些第三方的API快速构建自己的位置服务应用。好了好了上面是百度来的,“借鉴”。第一次听说在网页上应用百度地图我首先想到了iframe,就这样不就完..._百度地图用途

Map的表结构、遍历哈希 Map 、有无线程安全的线程_java hashmap的循环获取数据 安全-程序员宅基地

文章浏览阅读834次,点赞21次,收藏19次。是 Java 中提供的线程安全的哈希 Map 实现,它通过使用分段锁(Segment)来支持并发访问,从而提高了性能。每个段上都有一个锁,多个线程可以同时访问不同的段,从而减小了锁的竞争范围,提高了并发性能。根据实现和特性的不同,Map 可以分为多种不同的类型。遍历哈希 Map 通常意味着访问其中的每一个键值对,并执行一些操作。时,多个线程可以安全地进行读取操作,而写入操作只锁定相关的段,而不是整个数据结构。有线程安全的 Map 集合,其中最常见的是。创建的同步 Map)具有更好的性能。_java hashmap的循环获取数据 安全

人工神经网络(一)概述_神经网络中连接权重-程序员宅基地

文章浏览阅读195次。人工神经网络(一)概述_神经网络中连接权重

探索 MegaTinyCore:一款超小型嵌入式 Linux 发行版-程序员宅基地

文章浏览阅读358次,点赞4次,收藏5次。探索 MegaTinyCore:一款超小型嵌入式 Linux 发行版项目地址:https://gitcode.com/SpenceKonde/megaTinyCoreMegaTinyCore 是一个极简主义的嵌入式 Linux 发行版,专为在受限硬件环境下运行而设计。它的核心理念是提供最基础的功能集,以实现最小的内存占用和高效的性能表现。这款项目的目标在于让开发者能够利用有限的资源构建功能丰富...

【新型敏捷硬件开发语言——Chisel】_chisel 语言-程序员宅基地

文章浏览阅读864次。初步学习Scala与Chisel,了解HDL发展历史,同时也熟悉了项目的部署过程。_chisel 语言

遍历Stream并设置属性值_stream遍历赋值-程序员宅基地

文章浏览阅读1.2w次。// 初始化数据,设置评价等级 List<TblApplyForCleaning> list = (List<TblApplyForCleaning>) tblApplyForCleaningRepository.findAll(); list.stream().forEach(p -> { if (p.getXing() != null)..._stream遍历赋值