因为许多整数在求和时会溢出,所以我需要一个很长的流来完成这项工作,但它不会接受int
数组。如何在流式传输时转换每个元素而不是使用long
数组?
// arr is an int[]
LongStream s = Arrays.stream( arr); // error
result = s.reduce(0, Long::sum);
编辑:似乎整数流使用其方法变为长整数流,如Tagir Valeev的答案。
LongStream asLongStream();
答案 0 :(得分:7)
LongStream s = Arrays.stream(arr).asLongStream();
顺便说一下,s.reduce(0, Long::sum)
是简单sum()
方法的替代方式(内部也是如此):
long result = Arrays.stream(arr).asLongStream().sum();