reduce补充

2022-08-16 19:10:50 浏览数 (1)

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

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

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

代码语言:javascript复制
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

0 人点赞