用方法引用替换 lambda 表达式
Replacing lambda expression with method reference
我有一个采用参数 Stream<Double> stream
的静态方法。来自 arraylist.stream()
或 Arrays.stream(array)
.
该方法的工作是 return 可被三整除的所有整数的总和。
return stream.filter(i -> i.intValue() % 3 == 0).mapToInt(i -> i.intValue()).sum()
此方法有效,但 IntelliJ 建议如下:
This inspection reports lambdas which can be replaced with method references.
我不太熟悉方法引用,尤其是使用 class 命名方案的引用实例方法。
我尝试了以下方法,但出现错误。
stream.filter(i -> i.intValue() % 3 == 0).mapToInt(Integer::intValue).sum()
有什么建议吗?
正如你所说的参数流是Double类型,所以你应该这样做
stream.mapToInt(Double::intValue).filter(i -> i % 3 == 0).sum()
因为您正在调用 Double class' intValue 函数。
我有一个采用参数 Stream<Double> stream
的静态方法。来自 arraylist.stream()
或 Arrays.stream(array)
.
该方法的工作是 return 可被三整除的所有整数的总和。
return stream.filter(i -> i.intValue() % 3 == 0).mapToInt(i -> i.intValue()).sum()
此方法有效,但 IntelliJ 建议如下:
This inspection reports lambdas which can be replaced with method references.
我不太熟悉方法引用,尤其是使用 class 命名方案的引用实例方法。
我尝试了以下方法,但出现错误。
stream.filter(i -> i.intValue() % 3 == 0).mapToInt(Integer::intValue).sum()
有什么建议吗?
正如你所说的参数流是Double类型,所以你应该这样做
stream.mapToInt(Double::intValue).filter(i -> i % 3 == 0).sum()
因为您正在调用 Double class' intValue 函数。