Lambda没有解析类型

IUn*_*own 1 java lambda java-stream

我看到一个奇怪的问题,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(); 
}
Run Code Online (Sandbox Code Playgroud)

我得到total并且e无法解决变量.
我看到'total'和'e'被用作参数而没有声明的例子.
但是,在我的情况下 - 它拒绝编译而不声明.
这是什么问题?

Era*_*ran 5

Arrays.asList(array)对于原始数组,返回List其单个元素是该数组的元素.

更改

Arrays.asList(array).stream()
Run Code Online (Sandbox Code Playgroud)

Arrays.stream(array)
Run Code Online (Sandbox Code Playgroud)

注意这将给出一个IntStream,而不是一个Stream<Integer>,所以intValue()最后不需要:

int sum1 = Arrays.stream(array).reduce(0, (total, e) -> total + e);
Run Code Online (Sandbox Code Playgroud)

对于Stream<Integer>你可以写:

Arrays.stream(array).boxed()
Run Code Online (Sandbox Code Playgroud)

全线将是:

int sum1 = Arrays.stream(array).boxed().reduce(0, (total, e) -> total + e).intValue ();
Run Code Online (Sandbox Code Playgroud)

当然,你可以简单地获得总和:

int sum1 = Arrays.stream(array).sum ();
Run Code Online (Sandbox Code Playgroud)