迭代器
接口的继承者(包括 Set
与 List
)可以通过调用 iterator()
函数获得迭代器。 一旦获得迭代器它就指向集合的第一个元素;调用 函数将返回此元素,并将迭代器指向下一个元素(如果下一个元素存在)。 一旦迭代器通过了最后一个元素,它就不能再用于检索元素;也无法重新指向到以前的任何位置。要再次遍历集合,请创建一个新的迭代器。
fun main() {
//sampleStart
val numbers = listOf("one", "two", "three", "four")
for (item in numbers) {
println(item)
}
//sampleEnd
}
最后,有一个好用的 forEach()
函数,可自动迭代集合并为每个元素执行给定的代码。因此,等效的示例如下所示:
//sampleStart
val numbers = listOf("one", "two", "three", "four")
val listIterator = numbers.listIterator()
while (listIterator.hasNext()) listIterator.next()
println("Iterating backwards:")
while (listIterator.hasPrevious()) {
print("Index: ${listIterator.previousIndex()}")
println(", value: ${listIterator.previous()}")
}
//sampleEnd
具有双向迭代的能力意味着 ListIterator
在到达最后一个元素后仍可以使用。
可变迭代器
除了删除元素, MutableListIterator
还可以在迭代列表时插入和替换元素。
fun main() {
//sampleStart
val numbers = mutableListOf("one", "four", "four")
val mutableListIterator = numbers.listIterator()
mutableListIterator.next()
mutableListIterator.add("two")
mutableListIterator.next()
mutableListIterator.set("three")
println(numbers)