我看到一个奇怪的问题,其中eclipse没有识别我的lambda参数
public static void main(String[] args) {
int[] array = {23,43,56,97,32};
int sum1 = Arrays.asList(array).stream().reduce(0, (total, e) -> total + e).intValue();
}
我得到total
并且e
无法解析为变量
我看到一些例子,其中'total'和'e'被用作参数而没有声明。
但是,就我而言 - 它在没有声明的情况下拒绝编译
这是什么问题?
答案 0 :(得分:5)
111Grapes[
返回Arrays.asList(array)
,其单个元素就是该数组。
更改
List
到
Arrays.asList(array).stream()
请注意,这将提供给Arrays.stream(array)
,而不是IntStream
,因此最后不需要Stream<Integer>
:
intValue()
对于int sum1 = Arrays.stream(array).reduce(0, (total, e) -> total + e);
你可以写:
Stream<Integer>
,整行将是:
Arrays.stream(array).boxed()
当然,您可以通过以下方式获得总和:
int sum1 = Arrays.stream(array).boxed().reduce(0, (total, e) -> total + e).intValue ();
答案 1 :(得分:3)
IntStream.of(...)
你应该这样:
int sum1 = Arrays.stream(array).sum();
答案 2 :(得分:0)
只需使用:
int sum1 = Arrays.stream(array).sum ();
我已将生成int[] array = {23,43,56,97,32};
int sum1 = Arrays.stream(array).reduce(0, (total, e) -> total + e);
的{{1}}更改为Arrays.asList(...).stream()
(或Stream<int[]>
)。
除此之外,您还可以将缩减简化为:
Arrays.stream(...)