Java 如何使用流过滤器和求和
这种方法是使用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
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之前的代码兼容…