情景:
List<Map<String, Object>>,需要对Map中的discount字段求和,类型为BigDecimal,
找了很多文章,因为想用lamda语法,not for!
发现很多list中放的是实体类,可这么写:
//计算 总金额
BigDecimal discount= appleList.stream().map(Apple::getDiscount).reduce(BigDecimal.ZERO, BigDecimal::add);
System.err.println("discount:"+discount);
但是map写法不太一样:
BigDecimal discountAll = list.stream()
.map(m -> m.get("discount") == null ? BigDecimal.ZERO : new BigDecimal(m.get("discount").toString()))
.reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2,BigDecimal.ROUND_DOWN);