将LINQ表达式移植到Java

时间:2014-03-11 16:24:20

标签: c# java linq

我正在将大量C#代码移植到Java,并且不得不处理类似的表达式:

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

是否有首选方法可以执行此操作,还是应该循环执行schedules(在本例中)执行必要的测试?

2 个答案:

答案 0 :(得分:0)

我无法编译,因为我没有原始代码,但它会是这样的

List<Schedule> matches = new ArrayList<Schedule>();

for(int x = 0; x < schedules.size(); x++){
   if(schedules[x].IsStillRelevantOn(calculatedDate))
       matches.add(schedules[x]);
}

if(matches.size() <= 0){
     //This is where you want your code

}

答案 1 :(得分:0)

请注意,原始代码和天真翻译都不是很有效。它们都执行计数以检查它是否为空(参见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
}