map的内存地址指向问题

分析

每次遍历保存时,需要重新new HashMap<>(),否则原有的map在遍历结束后,都指向最后一个值。


代码
 @Override
    public Map<String, Object> TCourseStudyByCourseId(Long courseId){
        Map<String, Object> resultMap = new HashMap<>();
        //获取集
        List<Map<String, Object>> courseLst = new ArrayList<>();
        // Map<String, Object> courseMap = new HashMap<>();//******错误的位置
        String courseRemark = "";
        String courseName = "";

        //获取模块
        Map modularMap = new HashMap();
        modularMap.put("resId", courseId);
        List<TStudyCurriculumModular> modularLst = this.tStudyCurriculumModularMapper.TStudyCurrModularLstByCourseId(modularMap);

        //获取模块下的资源
        if(modularLst != null && modularLst.size() > 0){
            courseName = modularLst.get(0).getCourseName();
            courseRemark = modularLst.get(0).getCourseRemark();
            for (TStudyCurriculumModular modular : modularLst) {
                if(modular != null){
                    Map<String, Object> courseMap = new HashMap<>();//******正确的位置
                    Long mkId = modular.getId();
                    String modularName = modular.getName();
                    courseMap.put("modularName", modularName);

                    //模块下的资源
                    Map contentMap = new HashMap();
                    contentMap.put("mkId", mkId);
                    List<TStudyCurriculumContent> contentLst = this.tStudyCurriculumContentMapper.findPage(contentMap);
                    courseMap.put("contentLst", contentLst);

                    //保存课程
                    courseLst.add(courseMap);
                }
            }
        }

        resultMap.put("courseName", courseName);
        resultMap.put("courseRemark", courseRemark);
        resultMap.put("courseLst", courseLst);
        return resultMap;
    }

错误的位置,结果如下
这里写图片描述


正确的位置,结果如下
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值