我有一个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();
是否有更优雅的方法来避免空值?
发布于 2016-04-30 14:48:02
通过最后的乘法,你可以获得更多的速度:
BigDecimal sum = listBigInt.stream()
.filter(c -> c != null)
.reduce(BigDecimal::add)
.get()
.multiply(new BigDecimal(5));
发布于 2016-04-30 14:28:59
实际上,一种可能的方法是在映射之前使用过滤器,如下所示:
BigDecimal sum = listBigInt.stream()
.filter(c -> c != null)
.map(c -> c.multiply(new BigDecimal(5)))
.reduce(BigDecimal::add).get();
https://stackoverflow.com/questions/36956069
复制相似问题