是否有一个等同于C#的.Aggregate(foo)方法的java?

Oge*_*gen 2 c# java

我试图在java中的这个问题中实现接受答案:

一组超过2个整数的最大公约数

但我不知道如何实现聚合函数.

See*_*ose 6

使用Java 8时有一个单行程序:

public class GCD {
    public static void main(String[] args) {
        int[] ints = { 42, 21, 14, 70 };
        System.out.println(gcd(ints));
    }
    public static int gcd(int[] ints) {
        return Arrays.stream(ints).reduce((a, b) -> gcd(a, b)).getAsInt();
    }
    public static int gcd(int a, int b) {
        return b == 0 ? a : gcd(b, a % b);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出为"7".聚合函数称为约.

替代方案:lambda也可以使用方法引用编写.

public static int gcd(int[] ints) {
    return Arrays.stream(ints).reduce(GCD::gcd).getAsInt();
}
Run Code Online (Sandbox Code Playgroud)