亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果條件取決于當前值和先前值,如何檢查 takeWhile 中的條件?

如果條件取決于當前值和先前值,如何檢查 takeWhile 中的條件?

智慧大石 2023-09-27 15:19:36
我有一個 arrayList 如下:[{hours: 48, cancellationCharges: 0},   {hours: 12, cancellationCharges: 10},   {hours: 0, cancellationCharges: 20}]上述數組表示出發前 0 至 12 小時內,需收取 20% 的取消費用。出發前 12 小時至 48 小時內,需支付 10% 的取消費;超過 48 小時,則無需支付取消費。我想過濾上述內容以找出超出一天的取消費用。即,在上述情況下,結果應該是[{hours: 48, cancellationCharges: 0},   {hours: 12, cancellationCharges: 10}]我嘗試按條件“小時”>= 24 進行過濾,如果最后一個元素的小時數不是 24,我會再次迭代以找到第一個小時數 < 24 的元素。是否有更好的方法來解決此問題。我用的是java12。
查看完整描述

1 回答

?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

您只需要跟蹤您看到的最后“小時”值即可。請記住,Predicate您傳遞給的takeWhile是一個對象,因此您可以在其中保留狀態。它看起來像這樣:


cancellationRules.takeWhile(new Predicate<CancellationRule> {

    private int previousHours = Integer.MAX_VALUE;

    public boolean test(CancellationRule rule) {

        boolean result = rule.hours >= 24 || previousHours >= 24;

        previousHours = rule.hours;

        return result;

    }

});


查看完整回答
反對 回復 2023-09-27
  • 1 回答
  • 0 關注
  • 98 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號