我正在将大量C#代码移植到Java,并继续处理类似以下的表达式:

if (schedules.Where(s = > s.IsStillRelevantOn(calculatedDate)).Count() <= 0)


有没有一种首选的方法可以执行此操作,还是应该仅遍历schedules(在这种情况下)执行必要的测试?

最佳答案

请注意,原始代码和幼稚的翻译效率都不高。他们都执行计数只是为了检查它是否为空(请参见this SO question)。在您的示例中,您实际上不需要过滤列表,因此可以执行以下操作:

bool hasElement = false;
for(int i = 0; !hasElement && i < schedules.size(); i++) {
    if(schedules[i].IsStillRelevantOn(calculatedDate))
        hasElement = true;
}

if (!hasElement) {
    // sequence is empty
}

10-06 06:56