Java8开始提供的stream操作非常简单,减少了代码量,写起来也更直观。
在写代码过程中看到了一个map操作,可以将一个list变成了map,之后还能通过流操作再转为list。
以下边代码为例,通过课程id的list来获取每个课程
public List<Course> getRecommendCourses() {
//通过某方法获取课程id的list
List<Long> courseIds = ***(***);
return courseIds.stream()
.map(aLong -> courseManagerService.getCourseFromCMP(aLong,platform))
.filter(p->p!=null)
.peek(p -> p.setStudyNum(***))
.collect(Collectors.toList());
}
上边的map操作如果不写成lamda表达式的形式则是如下写法,看起来更直观:
courseIds.stream()
.map(new Function<Long, Course>() {
@Override
public Course apply(Long aLong) {
return courseManagerService.getCourseFromCMP(aLong,platform);
}
}).collect(Collectors.toList());
里边需要使用Function接口并且重写apply方法。
.filter是过滤器,满足条件的才会被留下
peek是进行遍历的,类似于foreach