Groovy findIndexValues返回List <long> </long>

时间:2012-12-06 20:03:53

标签: collections types groovy

我一定是疯了但为什么Groovy findIndexValues返回List<long>?我可以在Integer中获得索引吗?

foo = ['a','b','d','e', 'e','e']
indices  = foo.findIndexValues { it == 'e'}
indices.each { println foo[it] }

以上内容会崩溃,因为foo集合无法处理长时间的访问索引。我不是应该使用这种语言吗?

2 个答案:

答案 0 :(得分:4)

这就是该方法的工作原理。它使用迭代器遍历集合,并将匹配的索引跟踪为long。从理论上讲,它支持的集合大于Integer.MAX_VALUE,但我很怀疑这在实践中是否有用。

您可以使用以下方法解决问题:

indices.each { println foo[it as int] }

答案 1 :(得分:0)

不是每次使用索引时都进行转换,而是在初始赋值中将其全部转换为。

foo = ['a','b','d','e', 'e','e']
indices  = foo.findIndexValues { it == 'e'}.collect { it as Integer }
indices.each { println foo[it] }