参考文档
代码如下
import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import static java.math.RoundingMode.HALF_UP; /** * @author: shaoshuaui.zheng * @description: 处理null类 * @date: 2019/1/28 14:40 */ @Service @Slf4j public class BigDecimalUtil { private static final BigDecimal ZERO = BigDecimal.ZERO; public boolean isNull(BigDecimal bigDecimal) { return bigDecimal == null; } public boolean isNullOrEqZero(BigDecimal bigDecimal) { return bigDecimal == null || bigDecimal.compareTo(ZERO) == 0; } public boolean isNullOrLessZero(BigDecimal bigDecimal) { return bigDecimal == null || bigDecimal.compareTo(ZERO) < 0; } public boolean isNullOrLessOrEqZero(BigDecimal bigDecimal) { return bigDecimal == null || bigDecimal.compareTo(ZERO) <= 0; } public boolean isGreaterThanZero(BigDecimal bigDecimal) { if (bigDecimal == null) { return false; } return bigDecimal.compareTo(ZERO) > 0; } public boolean isGreaterThanOrEqualToZero(BigDecimal bigDecimal) { if (bigDecimal == null) { return false; } return bigDecimal.compareTo(ZERO) >= 0; } /** * 将字符串转换成BigDecimal对象 */ public BigDecimal stringToBigDecimal(String stringBigdecimal) { if (StringUtils.isBlank(stringBigdecimal)) { return BigDecimal.ZERO; } try { return new BigDecimal(stringBigdecimal).setScale(2, 4); } catch (Exception e) { log.error("stringToBigDecimal is error"); } return BigDecimal.ZERO; } /** * 将null转换为0 */ public BigDecimal bigDecimalNullToZero(BigDecimal bigDecimal) { if (bigDecimal == null) { return BigDecimal.ZERO; } else { return bigDecimal; } } /** * 加法 */ public BigDecimal bigDecimalAddList(List<BigDecimal> decimalList) { return decimalList .stream() .map(this::bigDecimalNullToZero) .reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, HALF_UP); } public static void main(String[] args) { BigDecimalUtil bigDecimalUtil = new BigDecimalUtil(); ArrayList<BigDecimal> list = new ArrayList<>(); list.add(new BigDecimal("10")); list.add(new BigDecimal("20")); list.add(new BigDecimal("30")); list.add(null); System.out.println(bigDecimalUtil.bigDecimalAddList(list)); } }