1,关于下面这段代码:
@Override
public List<TermTimeInfoVo> queryByCourseId(Long courseId) {
VcTerm vcTerm=new VcTerm();
vcTerm.setIsDelete(Contants.UN_DELETE_FLAG);
vcTerm.setCourseId(courseId);
List<VcTerm> vcTerms = vcTermMapper.select(vcTerm);
if (CollectionUtils.isNotEmpty(vcTerms)){
**return** vcTerms.stream().map(x -> {
//根据期次id查询自由选课默认班级信息
ClassVo classVo = classMapper.queryClassInfoByTermId(x.getId());
TermTimeInfoVo termTimeInfoVo = new TermTimeInfoVo();
termTimeInfoVo.setEndTime(x.getEndTime().getTime());
termTimeInfoVo.setStartTime(x.getStartTime().getTime());
termTimeInfoVo.setTermName(x.getTermName());
termTimeInfoVo.setTermId(x.getId());
if (classVo != null){
termTimeInfoVo.setClassId(classVo.getClassId());
}
return termTimeInfoVo;
}).collect(Collectors.toList());
}
return null;
}
2,关于这个问题:当这段代码中没有写加粗的return的时候,明明termTimeInfoVo里面有值,那为什么这个接口还是返回为null?
回答:list.stream().map中的return像continue的作用一样,只是结束当前循环。所以这段代码经过 return termTimeInfoVo;,完成这个循环后,还会执行到 return null这个代码,所以接口返回null。
怎么解决呢?
在这段代码加上以上加粗的return就可以了,就返回的是这个循环的list中的返回结果list,也正好对应这个接口的返回类型 List。这样就不会执行下面的return null代码了,接口返回也有结果了。
3,关于list.stream().map是啥意思?
看这个网址的解读:https://blog.csdn.net/shine_guo_star/article/details/94383319
或者看自己的收藏夹–《学习》里面这个文章