首页 > 解决方案 > 从 Groovy 中的数组中选择(非)偶数索引上的元素

问题描述

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

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

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

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

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

标签: groovy

解决方案


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

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

推荐阅读