迭代器

    接口的继承者(包括 SetList)可以通过调用 iterator() 函数获得迭代器。 一旦获得迭代器它就指向集合的第一个元素;调用 函数将返回此元素,并将迭代器指向下一个元素(如果下一个元素存在)。 一旦迭代器通过了最后一个元素,它就不能再用于检索元素;也无法重新指向到以前的任何位置。要再次遍历集合,请创建一个新的迭代器。

    1. fun main() {
    2. //sampleStart
    3. val numbers = listOf("one", "two", "three", "four")
    4. for (item in numbers) {
    5. println(item)
    6. }
    7. //sampleEnd
    8. }

    最后,有一个好用的 forEach() 函数,可自动迭代集合并为每个元素执行给定的代码。因此,等效的示例如下所示:

    1. //sampleStart
    2. val numbers = listOf("one", "two", "three", "four")
    3. val listIterator = numbers.listIterator()
    4. while (listIterator.hasNext()) listIterator.next()
    5. println("Iterating backwards:")
    6. while (listIterator.hasPrevious()) {
    7. print("Index: ${listIterator.previousIndex()}")
    8. println(", value: ${listIterator.previous()}")
    9. }
    10. //sampleEnd

    具有双向迭代的能力意味着 ListIterator 在到达最后一个元素后仍可以使用。

    可变迭代器

    除了删除元素, MutableListIterator 还可以在迭代列表时插入和替换元素。

    1. fun main() {
    2. //sampleStart
    3. val numbers = mutableListOf("one", "four", "four")
    4. val mutableListIterator = numbers.listIterator()
    5. mutableListIterator.next()
    6. mutableListIterator.add("two")
    7. mutableListIterator.next()
    8. mutableListIterator.set("three")
    9. println(numbers)