java - 是否有与 C# 的 .Aggregate(foo) 方法等效的 java?

标签 java c#

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

Greatest Common Divisor from a set of more than 2 integers

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

最佳答案

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

关于java - 是否有与 C# 的 .Aggregate(foo) 方法等效的 java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24948997/

相关文章:

java - 如何正确改变Java中数组元素的值?

java - 线程 "main"org.apache.kafka.streams.errors.InvalidStateStoreException : 中出现异常

java - 是否有 Java EE 方式来更改用户?

c# - 使用 Azure 消息中心的 Xamarin Forms 推送通知无法在 Release模式下工作

c# - 证件编号正则表达式

集合和迭代器的 C# 性能

c# - AWS Lambda C# - 访问自定义上下文

java - 使用 HttpClient/MultipartEntity 流式传输上传

Java Swing - Nimbus L&F 在应用排序后覆盖 JTable header 中的自定义图标

c# - 将对象列表从 VB6 编码到 C#