【问题标题】:Functional interface + lambda expression for sum of integers in an array函数式接口 + 用于数组中整数和的 lambda 表达式
【发布时间】:2019-07-13 00:44:13
【问题描述】:

我正在处理一个要求创建一个函数式接口的练习,该接口的方法将一个整数 k 和一个整数数组作为输入并返回一个整数。 然后,我应该为接口的一个实例分配一个 lambda 表达式,该表达式返回数组中小于或等于 k ​​的所有值的总和。

对于界面,我认为我应该这样做:

@FunctionalInterface
public interface FunctionOnAnArray {
    int apply(int k, int ... intArray);
}

但是,我无法弄清楚 lambda 表达式。

public class Test {
    int sum = 0;
    FunctionOnAnArray f = (k, intArray) -> { for (int i : intArray) if (i <= k) sum += i; return sum; };
}

这似乎太笨重了。

【问题讨论】:

    标签: java lambda functional-programming functional-interface


    【解决方案1】:

    您可以将其简化为:

    FunctionOnAnArray f = (k, arr) -> Arrays.stream(arr)
        .filter(a -> a <= k)
        .sum();
    

    旁白:您也可以选择不使用 Varargs 定义接口并将其更新为:

    @FunctionalInterface
    public interface FunctionOnAnArray {
        int apply(int k, int[] arr);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      • 2018-10-07
      相关资源
      最近更新 更多