Пытаюсь выучить Java 8 потоков. Я хочу преобразовать этот код в Java 8 потоков, но я также хочу знать, что делают потоки.
List<Optional<Payment>> filteredPaymentList = new ArrayList<>();
for (Optional<Payment> payment : paymentList) {
BigDecimal amount = availableToCreditFromNets(payment.get().getId());
if (BigDecimalUtils.is(amount).isPositive()) {
filteredPaymentList.add(payment);
}
}
availableToCreditFromNets
возвращает:
public BigDecimal availableToCreditFromNets(Long paymentId) {
List<NetsTransaction> netsTransactions = this.findAllNetsTransactionsByPaymentIdAndStatus(paymentId, NetsTransactionStatus.OK);
BigDecimal amount = ZERO_WITH_TWO_DIGITS;
for (NetsTransaction netsTransaction : netsTransactions) {
amount = amount.add(netsTransaction.getAmount());
//Find all credit transactions
List<NetsTransaction> creditedNetsTransactions = this.findNetsTransactionsByOriginalTransaction(netsTransaction.getId(), NetsTransactionStatus.OK);
for (NetsTransaction creditedNetsTransaction : creditedNetsTransactions) {
amount = amount.subtract(creditedNetsTransaction.getAmount().multiply(BigDecimal.valueOf(-1))); //Amount from credit transaction is negative
}
}
if (is(amount).isPositive()) {
return amount;
} else {
return ZERO_WITH_TWO_DIGITS;
}
}
ZERO_WITH_TWO_DIGITS
иметь следующий лог c:
public static final BigDecimal ZERO_WITH_TWO_DIGITS =
BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);