Groovy集合 - 查找与条件匹配的元素

时间:2014-06-09 06:40:52

标签: collections groovy

我有一个groovy集合,它是一个数组,包含从0到' n'的值。当出现一系列条件时,我需要找到一个特定的数组索引。并且,我不需要扫描数组的每个值,但可以跳过预定义的间隔。例如,查找数组中每10个值的条件。有人能告诉我一种方法吗? 例如,我想在下面做这样的事情

def alltimes = [0 . . . . . 10000]
def end_time = 10000
def time = 0
while(time <= end_time)
{
    // check the condition for alltimes[time]
     if(condition_satisfied){ 
         println "condition satisfied at time ${time}"
         break
     }
    time = time + 50  
}

当我探索所有可用的数组方法时,我没有找到任何一个可以允许跳转变量的方法,而不是每个方法中的每一个,每个方法都有索引。

好像我需要使用元类并创建一个新方法?

1 个答案:

答案 0 :(得分:2)

您可以使用find

def allTimes = 0..10000

Closure<Boolean> checkCondition = { all, single ->
    single > 300
}

​(0..10000).step( 50 )​.find { time -> ​checkCondition( allTimes, time ) }​

这适合做饭:

def allTimes = 0..10000

Closure<Boolean> checkCondition = { all, single ->
    single > 300
}

​(0..10000).step( 50 )​.find checkCondition.curry( allTimes )​