Java 数组流不求和
我试图对一个整数数组求和。我从red@ZouZou那里得到了解决方案,但无法使其发挥作用Java 数组流不求和,java,Java,我试图对一个整数数组求和。我从red@ZouZou那里得到了解决方案,但无法使其发挥作用 int [] arr = {1,2,3,4}; int sum = Arrays.stream(arr).sum(); //prints 10 我有 public static void proc(Integer[] v) { int sum = Arrays.stream(v).sum(); 编译器给出“找不到符号方法和” 有什么问题?这样做比循环求和快吗?数组。stream很少有重载版本 A
int [] arr = {1,2,3,4};
int sum = Arrays.stream(arr).sum(); //prints 10
我有
public static void proc(Integer[] v) {
int sum = Arrays.stream(v).sum();
编译器给出“找不到符号方法和”
有什么问题?这样做比循环求和快吗?
数组。stream
很少有重载版本
Arrays.stream(int[]arr)
返回具有sum
方法的IntStream
当
Arrays.stream(T[]arr)
返回没有sum
方法的stream
(其中T
是泛型)
由于您使用的是Integer[]
作为参数Arrays.stream(T[]arr)
,因此编译器会通知您缺少sum
方法
您可以在这里将used type更改为int[]
或使用类似
int sum = Arrays.stream(v).reduce(Integer::sum).orElse(0);
因为reduce
返回Optional
我可以使用get()
读取它的值,但这样我会冒风险
java.util.NoSuchElementException: No value present
如果没有要流式处理的元素(当数组为空时,如
新整数[0]
)。在这种情况下,最好使用orElse(0)
,这意味着:返回存储的值,如果没有值,则返回0
。数组。stream
很少有重载版本
Arrays.stream(int[]arr)
返回具有sum
方法的IntStream
当
Arrays.stream(T[]arr)
返回没有sum
方法的stream
(其中T
是泛型)
由于您使用的是Integer[]
作为参数Arrays.stream(T[]arr)
,因此编译器会通知您缺少sum
方法
您可以在这里将used type更改为int[]
或使用类似
int sum = Arrays.stream(v).reduce(Integer::sum).orElse(0);
因为reduce
返回Optional
我可以使用get()
读取它的值,但这样我会冒风险
java.util.NoSuchElementException: No value present
如果没有要流式处理的元素(当数组为空时,如新整数[0]
)。在这种情况下,最好使用orElse(0)
,这意味着:返回存储值,如果没有值,则返回0
。数组。stream(v)
返回流,因为v
是整数的数组。对于流
,没有sum()
如果v
是int[]
,那么Arrays.stream(v)
将返回您正在查找的sum()方法
希望这能澄清问题。数组。流(v)
返回一个流,因为v
是一个整数的数组。对于流
,没有sum()
如果v
是int[]
,那么Arrays.stream(v)
将返回您正在查找的sum()方法
希望这能澄清问题。在你给出的链接中,它使用了IntStream
,而不是Arrays
。在你给出的链接中,它使用了IntStream
,而不是Arrays
。什么是一个简化操作?这是一个广泛的话题。我建议你读书。简言之,reduce允许您基于流中的元素返回一些新结果。什么是reduce操作?这是一个广泛的主题。我建议你读书。简言之,reduce允许您基于流中的元素返回一些新结果。