Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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_Java Stream - Fatal编程技术网

Java 如何使用流过滤器和求和

Java 如何使用流过滤器和求和,java,java-stream,Java,Java Stream,这种方法是使用java流进行过滤和求和的最有效方法吗 public static void main(String[] args){ int[] array = {23,43,56,97,32}; int sum1 = Arrays.stream(array).boxed().filter(e -> 35 < e).reduce(0,(a,b)->a+b); } publicstaticvoidmain(字符串[]args){ int[]数组={23,43,5

这种方法是使用java流进行过滤和求和的最有效方法吗

public static void main(String[] args){
    int[] array = {23,43,56,97,32};
    int sum1 = Arrays.stream(array).boxed().filter(e -> 35 < e).reduce(0,(a,b)->a+b);
}
publicstaticvoidmain(字符串[]args){
int[]数组={23,43,56,97,32};
int sum1=Arrays.stream(array.boxed().filter(e->35a+b);
}

有什么更好的选择(如果有)以及为什么?

没有必要或理由限制您的流-始终使用
IntStream

int sum1 = Arrays.stream(array).filter(e -> 35 < e).sum();
intsum1=Arrays.stream(array).filter(e->35
因为
reduce
一直在创建新对象,除了
Integer
int
是不同的东西-求和需要取消装箱并再次装箱

更简单、更快的方法是进行
IntStream
专门化:

 Arrays.stream(array).filter(e -> 35 < e).sum();
Arrays.stream(array).filter(e->35
是的,这不仅便于阅读,而且效率更高。您还可以使用
IntStream.of(array)
启动流,以更明显地表明它是
IntStream
@MalteHartwig。在
IntStream.of(array)
下面也是一样的东西。of(array)
仍然使用
Arrays.stream
,是否明显是一种观点based@MalteHartwig:我宁愿呆在
Arrays.stream(array)
,因为这是在现有数组上进行流式处理,而不是使用varargs方法,该方法只接受现有数组以与Java 5之前的代码兼容…