如何在java 8中对数据流应用过滤器后获取整个列表: 就像我有整数列表和应用过滤器一样,下面的代码片段只给出了过滤后的数据,但我想要在更改后的整个列表:
我想让gradeListMod包含gradeList的所有值,只有几个过滤器:如果gradeList包含大于38的值且不是5的倍数,则将其四舍五入为5的倍数。然后返回包含所有值的列表
ex: if list has 35,67,89,30
then I want gradeListMod filled with : 35,70,90,30
List<Integer> gradeListMod= gradeList.stream().filter(mark->mark>38)
.filter(mark->(mark%5))
.map(mark->mark+(5-mark%5))
.collect(Collectors.toList());
答案 0 :(得分:0)
对于您要做的事情,您只需要一个map
方法。 filter
不适用于此处,因为您无法在以后的管道中获取已过滤的商品。
在map
方法中,您应该使用old-school if语句来检查条件。
gradeList.stream().map(mark -> {
if (mark > 38 && mark % 5 != 0) {
return mark+(5-mark%5);
} else {
return mark;
}
}).collect(Collectors.toList());