使用lamda表达式对list进行求和
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中也会有警告)。 最近用到的就这些,后续用到别的还会再更新!
