Java 8 在java8流中处理空的大小数
我有一个Java 8 在java8流中处理空的大小数,java-8,java-stream,biginteger,Java 8,Java Stream,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(); 有没有更优雅的方法来避
列表listBigInt
。有些项目为null
有些项目不为空。我希望所有项目(除了
null
值)乘以5,然后使用java8流求和。到目前为止,我想出了这个结构:
BigDecimal sum = listBigInt.stream()
.map(c -> (c == null ? BigDecimal.ZERO : c).multiply(new BigDecimal(5)))
.reduce(BigDecimal::add).get();
有没有更优雅的方法来避免空值?实际上,一种可能的方法是在映射之前使用筛选器,如下所示:
BigDecimal sum = listBigInt.stream()
.filter(c -> c != null)
.map(c -> c.multiply(new BigDecimal(5)))
.reduce(BigDecimal::add).get();
实际上,一种可能的方法是在映射之前使用过滤器,如下所示:
BigDecimal sum = listBigInt.stream()
.filter(c -> c != null)
.map(c -> c.multiply(new BigDecimal(5)))
.reduce(BigDecimal::add).get();
通过乘以最后一个,您可以获得更快的速度:
BigDecimal sum = listBigInt.stream()
.filter(c -> c != null)
.reduce(BigDecimal::add)
.get()
.multiply(new BigDecimal(5));
通过乘以最后一个,您可以获得更快的速度:
BigDecimal sum = listBigInt.stream()
.filter(c -> c != null)
.reduce(BigDecimal::add)
.get()
.multiply(new BigDecimal(5));