reduce补充

2021-03-01

java

先发制人,后发制于人。——《汉书》

关于stream中的reduce这里做个补充

我们使用reduce常用的其实有两种方式

1
2
System.out.println("求和:" + random.ints().limit(10).boxed().reduce(Integer::sum).orElseThrow(() -> new RuntimeException("求和失败")));
System.out.println("求和2:" + random.ints().limit(10).boxed().reduce(0, Integer::sum));

这里求和2中我们传入参数0,表示后面返回的是和参数0同类型的返回值

但如果使用第一种,返回的则是Optional

这里其实还有第三种重载方法,但这种方法我们使用场景较少

1
System.out.println("求和3:" + random.ints().limit(10).boxed().reduce(0, (i1, i2) -> Integer.sum(i1, i2), (i1, i2) -> null));

我们可以直接返回null

或者任意给一个

1
System.out.println("求和3:" + random.ints().limit(10).boxed().reduce(0, Integer::sum, Integer::sum));

因为通常情况下是不会执行第三个参数传入的Function