我一定是疯了但为什么Groovy findIndexValues返回List<long>
?我可以在Integer中获得索引吗?
foo = ['a','b','d','e', 'e','e']
indices = foo.findIndexValues { it == 'e'}
indices.each { println foo[it] }
以上内容会崩溃,因为foo集合无法处理长时间的访问索引。我不是应该使用这种语言吗?
答案 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] }