Java LongStream用于求和数组元素

时间:2015-09-26 12:31:09

标签: java java-8 java-stream

因为许多整数在求和时会溢出,所以我需要一个很长的流来完成这项工作,但它不会接受int数组。如何在流式传输时转换每个元素而不是使用long数组?

// arr is an int[]
LongStream s = Arrays.stream( arr); // error
result = s.reduce(0, Long::sum); 

编辑:似乎整数流使用其方法变为长整数流,如Tagir Valeev的答案。

  

LongStream asLongStream();

1 个答案:

答案 0 :(得分:7)

使用IntStream.asLongStream()方法:

LongStream s = Arrays.stream(arr).asLongStream();

顺便说一下,s.reduce(0, Long::sum)是简单sum()方法的替代方式(内部也是如此):

long result = Arrays.stream(arr).asLongStream().sum();