我有List<BigInteger> listBigInt
。有些项目是null
,有些则不是
我希望所有项目(null
值除外)乘以5并使用java8流求和
到目前为止,我已经解开了这个结构:
BigDecimal sum = listBigInt.stream()
.map(c -> (c == null ? BigDecimal.ZERO : c).multiply(new BigDecimal(5)))
.reduce(BigDecimal::add).get();
是否有更优雅的方法来避免空值?
答案 0 :(得分:1)
实际上,一种可能的方法是在映射之前使用过滤器:
BigDecimal sum = listBigInt.stream()
.filter(c -> c != null)
.map(c -> c.multiply(new BigDecimal(5)))
.reduce(BigDecimal::add).get();
答案 1 :(得分:1)
你可以通过乘以最后一个来获得更多的速度:
BigDecimal sum = listBigInt.stream()
.filter(c -> c != null)
.reduce(BigDecimal::add)
.get()
.multiply(new BigDecimal(5));