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'被用作参数而没有声明的例子.
但是,在我的情况下 - 它拒绝编译而不声明.
这是什么问题?
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)