相关疑难解决方法(0)

使用reduce和collect查找平均值

我试图了解新的Java 8 Stream API.

http://docs.oracle.com/javase/tutorial/collections/streams/reduction.html

我找到了使用collect API查找数字平均值的示例.但我觉得,使用reduce()也可以做同样的事情.

public class Test {

    public static void main(String[] args) {
        // Using collect
        System.out.println(Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
            .collect(Averager::new, Averager::accept, Averager::combine)
            .average());

        // Using reduce
        System.out.println(Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
            .reduce(new Averager(), (t, u) -> {
                t.accept(u);
                return t;
            }, (t, u) -> {
                t.combine(u);
                return t;
            }).average());
    }

    private static class Averager {
        private int total = 0;
        private int count = …
Run Code Online (Sandbox Code Playgroud)

java lambda functional-programming java-8 java-stream

5
推荐指数
1
解决办法
4607
查看次数