list转成tree返回前端

参考网址人家是封装的反射,泛型

耻辱,现在不会用他们封装的方法

到处之前excel导入的数据,参照之前写的网址poi低版本导入excel表头

就贴一个control层

java 复制代码
  @GetMapping(value = "/all")
    @Log("查询excel测试导入表头不带分页")
    @ApiOperation("查询excel测试导入表头不带分页")
//    @PreAuthorize("@el.check('sysTest:list')")
    public ResponseEntity<PageResult<SysTest>> querySysTest(SysTestQueryCriteria criteria){
        List<SysTest> sysTests = sysTestService.queryAll(criteria);
//        将list处理成tree
        ArrayList<SysTest> roots = new ArrayList<>();
        for (SysTest tree:sysTests){
            String parentlevel = tree.getParentlevel();
            if(StrUtil.isBlank(parentlevel)){
                roots.add(tree);
            }
        }
        sysTests.removeAll(roots);
        // 为根节点添加孩子节点
        for (SysTest tree:roots){
            addChild(tree,sysTests);
        }
//        System.out.println(roots);
        return new ResponseEntity<>(PageUtil.toPage(roots),HttpStatus.OK);
    }

    public void addChild(SysTest tree,List<SysTest> sysTests){
        String headid = tree.getHeadid();
        List<SysTest> children = tree.getChildren();
        for(SysTest cc : sysTests){
            if(headid.equals(cc.getParentlevel())){
                if(children == null){
                    children = new ArrayList<>();
                }
                children.add(cc);
//                写死的时候才知道人家封装说的(我debug发现自己是null,没有初始化)
// 重设目标节点的孩子节点集合,这里必须重设,因为如果目标节点的孩子节点是null的话,这样是没有地址的,就会造成数据丢失,所以必须重设,如果目标节点所在类的孩子节点初始化为一个空集合,而不是null,则可以不需要这一步,因为java一切皆指针
                tree.setChildren(children);
                addChild(cc,sysTests);
            }
        }
    }
相关推荐
代码写到35岁3 分钟前
【Java 单体架构改造 微服务 网关遇坑之 跨域配置】
java·微服务·架构
梁萌6 分钟前
vue项目从npm升级为pnpm
前端·npm·node.js
修己xj7 分钟前
CSS魔法:对话生成器与奔驰骏马的创意实现
前端·css
qq_12498707537 分钟前
基于Java的心理测试系统的设计与实现(源码+论文+部署+安装)
java·开发语言·vue.js·spring boot·计算机毕设·计算机毕业设计
拽着尾巴的鱼儿9 分钟前
Spring定时任务 Scheduled使用
java·后端·spring
学嵌入式的小杨同学15 分钟前
【嵌入式 C 语言高频考点】周测 + 期中真题解析:从基础语法到编程实战
c语言·数据结构·数据库·vscode·算法·面试
沉默-_-22 分钟前
力扣hot100双指针专题解析2(C++)
java·c++·算法·蓝桥杯·双指针
福楠23 分钟前
C++ | 红黑树
c语言·开发语言·数据结构·c++·算法
Jaxson Lin24 分钟前
Java编程进阶:智能仿真无人机项目1.0
java·开发语言
琹箐26 分钟前
Cursor 无法使用prettier格式化
前端