我List<Transaction>
Transaction
amount
BigDecimal
为amount
。
我想在此列表中添加所有BigDecimal spent = new BigDecimal("0.0");
transactions.forEach(t -> spent.add(t.getAmount()));
System.out.println(spent);
。我做了一些事情
spent
当我运行时,0.0
原来是transactions.forEach(t -> spent = spent.add(t.getAmount()));
此外,语法for each
会引发编译错误。
我正在尝试学习而不使用{{1}}循环
想法?
答案 0 :(得分:3)
在阅读Adding up BigDecimals using Streams之后,我发现以下是我需要的内容
final Function<Transaction, BigDecimal> transactionAmountMapper = Transaction::getAmount;
final BigDecimal result = entry.getValue().stream().map(transactionAmountMapper).reduce(BigDecimal.ZERO, BigDecimal::add);
答案 1 :(得分:1)
尝试使用流而不是foreach
List<BigDecimal> list = new ArrayList<>();
list.add(new BigDecimal(10));
list.add(new BigDecimal(10));
list.add(new BigDecimal(10));
BigDecimal total = list.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println(total);