我有余额详细列表,我需要在其中进行迭代,累积原始值并将其与列表中的每个债务值进行多次白化迭代进行比较。
BigDecimal cumulatetotamt= new BigDecimal(0);
BigDecimal thresholdRem= new BigDecimal(0);
第一次迭代:
for (Balance bal : BalanceList) {
for (Adjustments adj: AdjustmentsReportList) {
if (adj.getminval().equals(bal.thresholdval())) {
cumulatetotamt = cumulatetotamt.add(bal.orginalval());
}
}
}
第二次迭代:
for (Balance bal : BalanceList) {
for (Adjustments adj: AdjustmentsReportList) {
thresholdRem = adj.val1().subtract(adj.val2());
if (cumulatetotamt.compareTo(thresholdRem) > 0) {
}
}
}
我的问题是:如何使用 Java 的 Stream API 进行单次迭代来完成此任务?
第一次改成这样可行吗
BigDecimal totalBillAmt = BalanceList.stream()
.flatMap(bal -> AdjustmentsReportList.stream()
.filter(adj -> adj.getBillCode().equals(bal.getSellQuotaNo()))
.map(Bill::getBillAmt))
.reduce(BigDecimal.ZERO, BigDecimal::add);
我的意思是使用map而不是循环一次,第二次;