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") }