- 在一个List<Map<String, Object>>里,对金额元素的的sum操作:
list.stream().map(v -> (BigDecimal) v.get("money")).reduce(BigDecimal.ZERO, BigDecimal::add);
- 金额计算百分比,并保留两位小数
v.multiply(new BigDecimal(100)).divide(total, 2, BigDecimal.ROUND_HALF_UP).toPlainString() + "%";
- lambda表达式forEach里面金额的累加操作
AtomicReference<BigDecimal> initTotal = new AtomicReference<>(BigDecimal.ZERO);
list.forEach(item -> {
initTotal.accumulateAndGet(new BigDecimal(MapUtils.getString(item, "money")), BigDecimal::add);
});
- 金额格式化操作
BigDecimal money = new BigDecimal();
//格式化金额,保留两位小数
money.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString();
//千分位
DecimalFormat df = new DecimalFormat("###,##0.00");
df.format(money);