Collectors.averagingInt
Collectors.averagingIntJava 8 流的新类 java.util.stream.Collectors 实现了 java.util.stream.Collector 接口,同时又提供了大量的方法对流 ( stream ) 的元素执行 map and reduce 操作,或者统计操作。Collectors.averagingInt() 方法和 Collectors.averag
·
Collectors.averagingInt
Java 8流的新类java.util.stream.Collectors实现了java.util.stream.Collector接口,同时又提供了大量的方法对流 (stream) 的元素执行mapandreduce操作,或者统计操作。
Collectors.averagingInt() 方法和 Collectors.averagingDouble() 一样,不同的是它把流中的所有元素看成是 int类型,并返回一个浮点类型的平均值
然而:最不同的是–> 方法体中执行次数不同,做了优化
@Test
public void AveragingIntExample() {
List<Double> list = Arrays.asList(1.1, 2.2, 3.3, 4.4, 5.5);
Double result = list.stream().map(s -> {
System.out.println("map-> " + s);
return s;
}).collect(Collectors.averagingInt(d -> {
System.out.println(d + "-->" + (int) (d * 2));
return (int) (d * 2);
})
);
System.out.println("结果: "+result);
}
执行结果
map-> 1.1
1.1-->2
map-> 2.2
2.2-->4
map-> 3.3
3.3-->6
map-> 4.4
4.4-->8 #??? 这里为什么是 8? 4.4*2 = 8.8? 转化为Int之后变为8
map-> 5.5
5.5-->11
结果: 6.2
收货: Double值强转Int后,会丢失小数点后的值,不信你可以试一试
System.out.println((int) (9.9)); //值为9
更多推荐

所有评论(0)