关于copy树形结构

这段代码主要涉及数据结构的平铺转换,以及在转换过程中处理父子ID的存储。首先,通过遍历和递归将树形结构转化为扁平列表,并在过程中处理子节点。然后,创建新的对象列表并复制属性,同时为每个对象生成新的ID,并根据父ID进行更新。最后,将关联内容从旧列表中取出并存入新的表中。
摘要由CSDN通过智能技术生成

先把想要copy的去平铺

  //平铺树形结构
        List<AhseH0002AssessmentLibEntity> outList = new ArrayList<>();
        for (AhseH0002AssessmentLibEntity tTreeStructure : baseBean) {
            if (tTreeStructure.getZAhseH0002AssessmentEntity() != null) {
                List<AhseH0002AssessmentLibEntity> treeStructureList = tTreeStructure.getZAhseH0002AssessmentEntity();
                outList.add(tTreeStructure);
                convertChildrenToTileList(treeStructureList, outList);
                //若不需要字节点,则可设置为空
                //  tTreeStructure.setChildren(null);
            } else {
                outList.add(tTreeStructure);
            }
        }
//递归实现  
private static void convertChildrenToTileList(List<AhseH0002AssessmentLibEntity> source , List<AhseH0002AssessmentLibEntity> outList){
        if(outList==null){
            outList = new ArrayList<>();
        }
        for (AhseH0002AssessmentLibEntity tTreeStructure : source) {
            if (tTreeStructure.getZAhseH0002AssessmentEntity() != null) {
                List<AhseH0002AssessmentLibEntity> treeStructureList = tTreeStructure.getZAhseH0002AssessmentEntity();
                outList.add(tTreeStructure);
                convertChildrenToTileList(treeStructureList, outList);
                //若不需要字节点,则可设置为空
                //  tTreeStructure.setChildren(null);
            } else {
                outList.add(tTreeStructure);
            }
        }
    }

将父id子id 分别存入

//传入链表不变
       ArrayList<AhseH0002AssessmentLibEntity> oldlist = new ArrayList<>(16);
        for (AhseH0002AssessmentLibEntity ahseH0002AssessmentLibEntity : outList) {
            AhseH0002AssessmentLibEntity ahseH0002AssessmentLibEntity1 = new AhseH0002AssessmentLibEntity();
            BeanUtils.copyProperties(ahseH0002AssessmentLibEntity, ahseH0002AssessmentLibEntity1);
            oldlist.add(ahseH0002AssessmentLibEntity1);
        }

        // id列表篇存Map
        HashMap<String, String> map = new HashMap<String, String>(16);
        for (AhseH0002AssessmentLibEntity assessmentEntity : outList) {
            String s = IdUtil.randomUUID();
            map.put(assessmentEntity.getId(), s);
            assessmentEntity.setId(s);
        }
        //循环链表保存修改后的值
        for (AhseH0002AssessmentLibEntity assessmentEntity : outList) {
            if (map.get(assessmentEntity.getFid()) != null) {
                //重置父级ID
                assessmentEntity.setFid(map.get(assessmentEntity.getFid()));
            } else {
                //查不到父级拿取前端传来Idd
                assessmentEntity.setFid(idd);
            }
            ahseH0002AssessmentMapper.add(assessmentEntity);
        }
        //循环旧链表将关联的内容表查出并新建如另一张表
        for (AhseH0002AssessmentLibEntity ahseH0002AssessmentLibEntity : oldlist) {
                AhseH0002AssessmentlistEntity ahseH0002AssessmentlistEntity = new AhseH0002AssessmentlistEntity();
                ahseH0002AssessmentlistEntity.setAssessmentid(ahseH0002AssessmentLibEntity.getId());
                // 拿旧对象的
                List<AhseH0002AssessmentlistEntity> list = ahseH0002AssessmentlistMapper.getList(ahseH0002AssessmentlistEntity);
                if (list!=null&&list.size()>0){
                    for (AhseH0002AssessmentlistEntity h0002AssessmentlistEntity : list) {
                        // 将查出来的数据链表转换成另一张表内容
                        AhseH0002AssessmentLiblistEntity copylist = new AhseH0002AssessmentLiblistEntity();
                        copylist.setContent(h0002AssessmentlistEntity.getContent());
                        copylist.setFraction(h0002AssessmentlistEntity.getFraction());
                        copylist.setLrr(h0002AssessmentlistEntity.getLrr());
                        copylist.setLrsj(h0002AssessmentlistEntity.getLrsj());
                        copylist.setName(h0002AssessmentlistEntity.getName());
                        copylist.setScoringCriteria(h0002AssessmentlistEntity.getScoringCriteria());
                     //   BeanUtils.copyProperties(copylist, h0002AssessmentlistEntity);
                        //生成新的id 并把新的关联id 传入新表
                        copylist.setId(IdUtil.randomUUID());
                        if (map.get(h0002AssessmentlistEntity.getAssessmentid())!=null){
                            copylist.setAssessmentid(map.get(h0002AssessmentlistEntity.getAssessmentid()));
                        }

                        ahseH0002AssessmentLibListMapper.add(copylist);
                    }
                }

            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值