这种方式是使用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);
}
什么是更好的选择(如果有)以及为什么?
答案 0 :(得分:6)
没有必要或没有理由打包您的信息流 - 始终使用IntStream
:
int sum1 = Arrays.stream(array).filter(e -> 35 < e).sum();
答案 1 :(得分:2)
因为reduce
一直在创建新的对象,除了Integer
和int
之外还有不同的东西 - 求和将需要再次拳击和拳击。
更简单,更快捷的方法是解决IntStream
专业化问题:
Arrays.stream(array).filter(e -> 35 < e).sum();