Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组流不求和_Java - Fatal编程技术网

Java 数组流不求和

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

我试图对一个整数数组求和。我从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
很少有重载版本

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允许您基于流中的元素返回一些新结果。