gpt4 book ai didi

java - 如果条件取决于当前值和先前值,我如何检查 takeWhile 中的条件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:30:16 25 4
gpt4 key购买 nike

我有一个数组列表如下:

[{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。

最佳答案

您只需要跟踪您看到的最后一个“小时”值。请记住,您传递给 takeWhilePredicate 是一个对象,因此您可以将状态保存在其中。它看起来像这样:

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;
}
});

关于java - 如果条件取决于当前值和先前值,我如何检查 takeWhile 中的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58237322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com