Java中是否有类似于C#的.Aggregate(foo)方法的等效方法?

3

你能给我们举个例子,你想要做什么。比如一个数学例子。 - Rod_Algonquin
1个回答

9

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

接受答案,因为它确实有效,但我希望有一个j7的解决方案。 - Ogen
聚合不是语言规范的一部分。流和所有针对流的操作都是Java 8库的一部分。在之前的版本中,您必须自己实现它们或使用Guava(它们还具有一些不错的功能)。不幸的是,那时候您没有Lambda表达式。 - Seelenvirtuose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接