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中也会有警告)。
最近用到的就这些,后续用到别的还会再更新!