使用lamda表达式对list进行求和

本文介绍了如何使用Java 8的Lambda表达式对不同类型列表进行求和操作,包括Integer类型和BigDecimal类型。详细讲解了实体类List、Integer类型List以及BigDecimal类型List的求和方法,并强调了在处理可能为空的情况时,使用orElse(BigDecimal.ZERO)代替get()的重要性。

Lambda 表达式是 JDK8 的一个新特性,最近写项目中求和计算使用的较多,写一篇文章记录一下,也方便不懂的人参考一下。
一、实体类List返回Integer类型求和

//根据id查询库存
List<ProductStock> list = productStockMapper.selectList(Wrappers.<ProductStock>lambdaQuery().in(Product::id, idList))
//查询所有库存总和
Integer qtySum = list.stream().mapToInt(ProductStock::getStockQty).sum();

二、Integer类型List返回Integer类型求和

//查询当前所有商品库存
List<Integer> stockList = productStockMapper.selectStock();
//查询所有库存总和
Integer stockSum = stockList .stream().mapToInt(Integer::intValue).sum();

三、实体类List返回Bigdecimal类型求和

//根据id查询库存
List<ProductStock> list = productStockMapper.selectList(Wrappers.<ProductStock>lambdaQuery().in(Product::id, idList))
//查询所有库存金额总和
BigDecimal stockAmt = list .stream().map(ProductStock::getStockAmt).reduce(BigDecimal::add).orElse(Bigdecimal.ZERO);

四、BigDecimal类List返回Bigdecimal类型求和

//查询当前所有商品库存
List<Bigdecimal> stockList = productStockMapper.selectStock();
//查询所有库存金额总和
Bigdecimal stockAmt = stockList.stream().reduce(BigDecimal::add).orElse(Bigdecimal.ZERO);

**注:orElse(Bigdecimal.ZERO)而不是get(),是因为防止返回空(此处如果用get(),在idea中也会有警告)。
最近用到的就这些,后续用到别的还会再更新!

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值