防止在java 8的map()reduce()中为BigDecimal添加空指针



我正在尝试将给定产品的所有价格添加为:

BigDecimal getTotalPrice(List<Product> products) {
return products.stream()
.map(Product::getPrice)
.peek(bigDecimal -> System.out.println(bigDecimal))
.reduce(BigDecimal.ZERO, BigDecimal::add);
}

我尝试打印bigDecimal的所有值,每当我们将值作为null时,我们就会得到java.lang.NullPointerException,有没有更好的方法可以通过防止任何类型的异常来添加到java 8中?

我建议添加中间过滤步骤:

return products.stream()
.filter(Objects::nonNull) // If products can contain null values
.map(Product::getPrice)
.filter(Objects::nonNull) // If price can be null
.peek(bigDecimal -> System.out.println(bigDecimal))
.reduce(BigDecimal.ZERO, BigDecimal::add);

最新更新