Java LongStream求和int数组元素

标签 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();

最佳答案

使用IntStream.asLongStream()方法:

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

顺便说一句,s.reduce(0, Long::sum) 是简单 sum() 的较长替代方案方法(在内部做同样的事情):

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

关于Java LongStream求和int数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32797195/

相关文章:

java - <scope>provided</scope>依赖和weblogic?

java - 半透明的 jPanels

java - Windows 7 中 IBM JRE 上的 JMX 无法工作

java - 如何在链表中创建根节点?

java - 从内部匿名类访问外部匿名类的方法

java - 使用迭代器与收集完成流?

java - 创建自定义交替数字流

用于在列表中查找事件的 Java 流

java - 为什么 Java 8 流 forEach 循环在使用排序()方法后会重复结果

Java 8 API 流。需要解决重复 key 问题