java中是否有与c# 's . aggregate (foo)方法等价的方法?

本文关键字:方法 foo aggregate 是否 java | 更新日期: 2023-09-27 18:14:48

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

大于2个整数集合的最大公约数

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

java中是否有与c# 's . aggregate (foo)方法等价的方法?

使用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);
    }
}

输出为"7"。聚合函数称为约简

可选:lambda也可以用方法引用来编写。

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