如何使用 Java StreamAPI 将一次迭代中的总值与每条记录的值进行比较?

问题描述 投票:0回答:1

我有余额详细列表,我需要在其中进行迭代,累积原始值并将其与列表中的每个债务值进行多次白化迭代进行比较。

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 进行单次迭代来完成此任务?

java loops java-stream
1个回答
0
投票

第一次改成这样可行吗

BigDecimal totalBillAmt = BalanceList.stream()
                .flatMap(bal -> AdjustmentsReportList.stream()
                        .filter(adj -> adj.getBillCode().equals(bal.getSellQuotaNo()))
                        .map(Bill::getBillAmt))
                .reduce(BigDecimal.ZERO, BigDecimal::add);

我的意思是使用map而不是循环一次,第二次;

© www.soinside.com 2019 - 2024. All rights reserved.