list.stream().map(LandTransaction::getAreaCount).reduce(BigDecimal.ZERO, BigDecimal::add);
此方法如果遇到字段值为null的情况会报错,所以需要重写求和的方法
public class BigDecimalSum {
public static BigDecimal ifNull(BigDecimal value) {
if (value != null) {
return value;
} else {
return BigDecimal.ZERO;
}
}
public static BigDecimal sum(BigDecimal ...value){
BigDecimal result = BigDecimal.ZERO;
for (int i = 0; i < value.length; i++){
result = result.add(ifNull(value[i]));
}
return result;
}
}
使用上面方法后:
list.stream().map(LandTransaction::getAreaCount).reduce(BigDecimal.ZERO,BigDecimalSum::sum);