如何使用流过滤器和总和

时间:2017-11-10 11:53:28

标签: 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);
}

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

2 个答案:

答案 0 :(得分:6)

没有必要或没有理由打包您的信息流 - 始终使用IntStream

int sum1 = Arrays.stream(array).filter(e -> 35 < e).sum();

答案 1 :(得分:2)

因为reduce一直在创建新的对象,除了Integerint之外还有不同的东西 - 求和将需要再次拳击和拳击。

更简单,更快捷的方法是解决IntStream专业化问题:

 Arrays.stream(array).filter(e -> 35 < e).sum();