分析
每次遍历保存时,需要重新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;
}
错误的位置,结果如下
正确的位置,结果如下