4. 使用收集器实现求平均数
2018-12-20 本文已影响0人
百炼
date[2018-12-20]
使用收集器收集
1.函数式编程相对于指令式编程的一个主要优势:你只需指出希望的结果——“做什么”,而不用操心执行的步骤——“如何做”。
2.收集器非常有用,因为用它可以简洁而灵活地定义collect
用来生成结果集合的标准。更具体地说,对流调用collect
方法将对流中的元素触发一个归约操作(由Collector
来参数化)。
使用Collectors.averagingInt
求平均值,使用summarizingInt
工厂方法返回的收集器。例如,通过一次 summarizing
操作你可以就数出菜单中元素的个数,并得到菜肴热量总和、平均值、最大值和最小值。
@Test
public void testAveragingInt() {
Stream<Integer> integerStream = IntStream.iterate(0, n -> n + 2).limit(10).boxed();
Double average = integerStream.collect(Collectors.averagingInt(value -> value));
System.out.println("average:" + average);
}
@Test
public void testIntSummaryStaticstics() {
Stream<Integer> integerStream = IntStream.iterate(0, n -> n + 2).limit(10).boxed();
IntSummaryStatistics collect = integerStream.collect(Collectors.summarizingInt(v -> v));
System.out.println(collect.toString());
System.out.println("min:" + collect.getMin());
System.out.println("max:" + collect.getMax());
System.out.println("sum:" + collect.getSum());
System.out.println("average:" + collect.getAverage());
Assert.assertEquals(collect, "");
}
Collectors中定义的方法
Collectors收集器方法1.pngCollectors收集器方法2.png
Collectors收集器方法3.png