java 8 reduce 的使用

reduce 用于归约操作 (将流归约成一个值)

1.求和

有初始值

int sum = numbers.stream().reduce(0, (a, b) -> a + b); 

reduce接受两个参数:  一个初始值,这里是0;  一个BinaryOperator<T>来将两个元素结合起来产生一个新值,这里我们用的是 lambda (a, b) -> a + b。 你也很容易把所有的元素相乘,只需要将另一个Lambda:(a, b) -> a * b传递给reduce 操作就可以了: 
int product = numbers.stream().reduce(1, (a, b) -> a * b); 

无初始值:

reduce还有一个重载的变体,它不接受初始值,但是会返回一个Optional对象: 
Optional<Integer> sum = numbers.stream().reduce((a, b) -> (a + b)); 

 

 2.最大值和最小值 

Optional<Integer> max = numbers.stream().reduce(Integer::max); 
Optional<Integer> min = numbers.stream().reduce(Integer::min); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值