Kotlin迭代器列表?

我有一个来自JsonNode fieldNames字符串的迭代器:

 val mm = ... //JsonNode val xs = mm.fieldNames() 

我想循环的领域,同时保持计数,如下所示:

 when mm.size() { 1 -> myFunction1(xs[0]) 2 -> myFunction2(xs[0], xs[1]) 3 -> myFunction3(xs[0], xs[1], xs[2]) else -> print("invalid") } 

很明显,上面的代码不起作用,因为迭代器不能像这样索引。 我试图看看是否可以通过mm.toList()将迭代器转换为列表,但不存在。

我怎样才能做到这一点?

可能最简单的方法是将迭代器转换为Sequence ,然后再转换为List

 listOf(1,2,3).iterator().asSequence().toList() 

结果:

 [1, 2, 3] 

正如你可以在文档中看到的,有一些Kotlin特定的扩展可用于Iterator 。 正如Aivean已经指出的, asSequence是一个很好的开始:

  val it = listOf("s1", "s2", "s3").iterator() it.asSequence().toList() 

但是,我想你想迭代的值,你可以通过使用withIndex

  for ((i, v) in it.withIndex()) { println("Value at $i is $v") }