我试图总结一个整数数组.我从这个问题中解决了@ZouZou的解决方案,无法让它发挥作用
int [] arr = {1,2,3,4};
int sum = Arrays.stream(arr).sum(); //prints 10
Run Code Online (Sandbox Code Playgroud)
我有
public static void proc(Integer[] v) {
int sum = Arrays.stream(v).sum();
Run Code Online (Sandbox Code Playgroud)
并且编译器给出"找不到符号方法和".
问题是什么?这样做是否比用循环求和更快?
Arrays.stream
有很少的重载版本.
Arrays.stream(int[] arr)
返回IntStream
哪个sum
方法
而
Arrays.stream(T[] arr)
返回Stream<T>
(哪里T
是通用的)没有sum
方法.
由于您正在使用Integer[]
作为参数Arrays.stream(T[] arr)
被调用,这就是编译器通知您缺少sum
方法的原因.
你可以在这里做的是改变使用类型int[]
或使用类似的东西
int sum = Arrays.stream(v).reduce(Integer::sum).orElse(0);
Run Code Online (Sandbox Code Playgroud)
由于reduce
回报Optional<Integer>
我可以get()
用来读取它的价值,但这样我就冒险了
java.util.NoSuchElementException: No value present
Run Code Online (Sandbox Code Playgroud)
如果没有要流的元素(当数组为空时new Integer[0]
).在这种情况下,最好使用orElse(0)
哪种方法:返回存储值或0
没有值.
归档时间: |
|
查看次数: |
1052 次 |
最近记录: |