从 Groovy 数组中选取(非)偶数索引上的元素

Koe*_*oen 1 groovy

我有一个包含数字的 Groovy 数组。我需要创建两个仅包含偶数数字的新数组。该数组中的位置不均匀。

我能找到的最好的方法是这样的,但我觉得这里还有很大的改进空间:

def evenDigits = digits
    .indexed(1)
    .findAll { i, v -> i % 2 == 0 }
    .collect { it.value }
Run Code Online (Sandbox Code Playgroud)

显然,unevenDigits变体是简单地检查findAll闭包中的模数1而不是0

有谁知道这段代码是否可以改进或压缩?

inj*_*eer 5

一个“不太聪明”(而且肯定更高效)的解决方案:

def evens = [], odds = []
digits.eachWithIndex{ v, ix -> ( ix & 1 ? odds : evens ) << v }
Run Code Online (Sandbox Code Playgroud)