Java Lambda不解析类型
我看到一个奇怪的问题,eclipse没有识别我的lambda参数Java Lambda不解析类型,java,lambda,java-stream,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(); } 我得到的total和e无法解析为变量。 我看到一些示例,其中使用“total”和“
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”作为参数,而不进行声明。
但是,在我的例子中,它拒绝编译而不声明。
这里的问题是什么
array.asList(array)
对于基元数组,返回一个列表
,其单个元素是该数组
改变
Arrays.asList(array).stream()
到
注意:这将提供一个IntStream
,而不是Stream
,因此不需要在末尾提供intValue()
:
int sum1 = Arrays.stream(array).reduce(0, (total, e) -> total + e);
对于流
,您可以编写:
Arrays.stream(array).boxed()
整条线路将是:
int sum1 = Arrays.stream(array).boxed().reduce(0, (total, e) -> total + e).intValue ();
当然,您可以简单地通过以下方式获得总和:
int sum1 = Arrays.stream(array).sum ();
array.asList(array)
对于基元数组,返回一个List
,其单个元素就是该数组
改变
Arrays.asList(array).stream()
到
注意:这将提供一个IntStream
,而不是Stream
,因此不需要在末尾提供intValue()
:
int sum1 = Arrays.stream(array).reduce(0, (total, e) -> total + e);
对于流
,您可以编写:
Arrays.stream(array).boxed()
整条线路将是:
int sum1 = Arrays.stream(array).boxed().reduce(0, (total, e) -> total + e).intValue ();
当然,您可以简单地通过以下方式获得总和:
int sum1 = Arrays.stream(array).sum ();
只需使用:
int[] array = {23,43,56,97,32};
int sum1 = Arrays.stream(array).reduce(0, (total, e) -> total + e);
我已将生成stream
的Arrays.asList(…).stream()
更改为Arrays.stream(…)
(或IntStream.of(…)
)
除此之外,您还可以将缩减简化为:
int sum1 = Arrays.stream(array).sum();
只需使用:
int[] array = {23,43,56,97,32};
int sum1 = Arrays.stream(array).reduce(0, (total, e) -> total + e);
我已将生成stream
的Arrays.asList(…).stream()
更改为Arrays.stream(…)
(或IntStream.of(…)
)
除此之外,您还可以将缩减简化为:
int sum1 = Arrays.stream(array).sum();