深色模式
Kotlin 集合之 迭代器 Iterator
使用迭代器的方式
只要实现了Iterable
接口的类型,都提供迭代器。
下面是使用迭代器的3种方式:
使用
next()
kotlinval numbers = listOf("one", "two", "three", "four") val numbersIterator = numbers.iterator() while (numbersIterator.hasNext()) { println(numbersIterator.next()) }
使用
for...in
kotlinval numbers = listOf("one", "two", "three", "four") for (item in numbers) { println(item) }
使用
forEach()
kotlinval numbers = listOf("one", "two", "three", "four") numbers.forEach { println(it) }
List 的迭代器
List 的迭代器是ListIterator
类型,可以反向迭代:
kotlin
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()}")
}
// Iterating backwards:
// Index: 3, value: four
// Index: 2, value: three
// Index: 1, value: two
// Index: 0, value: one
可变迭代器
可变集合(MutableList
, MutableSet
, MutableMap
)的迭代器都是MutableIterator
类型,可以在迭代的过程中调用remove()
方法删除元素。
kotlin
val numbers = mutableListOf("one", "two", "three", "four")
val mutableIterator = numbers.iterator()
mutableIterator.next()
mutableIterator.remove()
println("After removal: $numbers")
// After removal: [two, three, four]
另外,MutableList
的迭代器是MutableListIterator
类型,可以在迭代过程中插入或替换元素。
kotlin
val numbers = mutableListOf("one", "four", "four")
val mutableListIterator = numbers.listIterator()
mutableListIterator.next()
mutableListIterator.add("two")
mutableListIterator.next()
mutableListIterator.set("three")
println(numbers)
// [one, two, three, four]