2016-04-30 14 views
0

私にはList<BigInteger> listBigIntがあります。いくつかの項目はnullではありません。
すべてのアイテム(nullの値を除く)に5を掛け、java8ストリームを使用して合計します。 NULL値を避けるために、よりエレガントな方法はjava8ストリームでのnull BigDecimalの処理

BigDecimal sum = listBigInt.stream() 
    .map(c -> (c == null ? BigDecimal.ZERO : c).multiply(new BigDecimal(5))) 
    .reduce(BigDecimal::add).get(); 

あります:
は、これまでのところ、私はこの構造をfugured?

答えて

1

あなたは最後に乗じて、いくつかのより多くの速度を得ることができます:

BigDecimal sum = listBigInt.stream() 
    .filter(c -> c != null) 
    .reduce(BigDecimal::add) 
    .get() 
    .multiply(new BigDecimal(5)); 
1

実際に可能な方法は、このようマッピングする前にフィルタを使用することです:

BigDecimal sum = listBigInt.stream() 
    .filter(c -> c != null) 
    .map(c -> c.multiply(new BigDecimal(5))) 
    .reduce(BigDecimal::add).get(); 
関連する問題