我正在将大量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
}