others - Java - 如果条件依赖于当前值和上一个值,如何检查takeWhile中的条件?

我有一个如下所示的arrayList :


[{hours: 48, cancellationCharges: 0}, 


 {hours: 12, cancellationCharges: 10}, 


 {hours: 0, cancellationCharges: 20}]



我想过滤上面的电子邮件,以查找超出日期的取消费用。 在上面的例子中,换句话说,应该是,


[{hours: 48, cancellationCharges: 0}, 


 {hours: 12, cancellationCharges: 10}]



有更好的办法来解决这个问题,我正在使用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;


 }


});



...