san*_*ank 8 java java-8 java-stream
我有一个Java Set,其中包含一些Integer元素.我想用Java 8流来汇总它的元素.
Set<Integer> numbers = new HashSet<>();
// Some code that will populate numbers
int sum = numbers.stream().mapToInt(Integer::intValue).sum() //Can overflow!
Run Code Online (Sandbox Code Playgroud)
我可以用上面的代码来获得的总和,但内容numbers是Integer元素远低于Integer.MAX_VALUE并且有大量的人,使得它们的总和可能溢出.如何将Integer元素流转换为元素流Long并将其安全地求和?
使用mapToLong(Integer::longValue)而不是mapToInt(...):
long sum = numbers.stream().mapToLong(Integer::longValue).sum();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
799 次 |
| 最近记录: |