先发制人,后发制于人。——《汉书》
关于stream
中的reduce
这里做个补充
我们使用reduce
常用的其实有两种方式
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
这里其实还有第三种重载方法,但这种方法我们使用场景较少
代码语言:javascript复制System.out.println("求和3:" random.ints().limit(10).boxed().reduce(0, (i1, i2) -> Integer.sum(i1, i2), (i1, i2) -> null));
我们可以直接返回null
或者任意给一个
代码语言:javascript复制System.out.println("求和3:" random.ints().limit(10).boxed().reduce(0, Integer::sum, Integer::sum));
因为通常情况下是不会执行第三个参数传入的Function
的