先发制人,后发制于人。——《汉书》
关于stream
中的reduce
这里做个补充
我们使用reduce
常用的其实有两种方式
1 | System.out.println("求和:" + random.ints().limit(10).boxed().reduce(Integer::sum).orElseThrow(() -> new RuntimeException("求和失败"))); |
这里求和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
的