for-in
循环(最常用)val list = listOf("A", "B", "C")
for (item in list) {
print("$item ")
}
// A B C
forEach
高阶函数val list = listOf("A", "B", "C")
list.forEach { item ->
print("$item ")
}
// A B C
forEachIndexed
val list = listOf("A", "B", "C")
list.forEachIndexed { index, item ->
println("$index - $item")
}
// 0 - A
// 1 - B
// 2 - C
withIndex()
+ for-in
使用 withIndex()
生成包含索引和值的迭代器。
val list = listOf("A", "B", "C")
for ((index, item) in list.withIndex()) {
println("$index - $item")
}
// 0 - A
// 1 - B
// 2 - C
List
)通过集合的 indices 属性获取索引范围。
val list = listOf("A", "B", "C")
for (i in list.indices) { //
println("${list[i]} at $i")
}
// A at 0
// B at 1
// C at 2
iterator
)val list = listOf("A", "B", "C")
val iterator = list.iterator()
while (iterator.hasNext()) {
print("${iterator.next()} ")
}
// A B C
List
专用:双向遍历(ListIterator
)val list = listOf("A", "B", "C")
val listIterator = list.listIterator()
while (listIterator.hasNext()) {
print("${listIterator.next()} ")
}
println()
while (listIterator.hasPrevious()) {
print("${listIterator.previous()} ")
}
// A B C
// C B A
while
循环(手动控制索引)val list = listOf("A", "B", "C")
var i = 0
while (i < list.size) {
print("${list[i]} ")
i++
}
// A B C
map
遍历转换(返回新集合)val list = listOf("A", "B", "C")
val newList = list.map { item ->
"Item: $item"
}
println(newList)
// [Item: A, Item: B, Item: C]
for
+ until
/downTo
)适用于需要自定义步长或方向的场景:
val list = listOf("A", "B", "C")
for (i in 0 until list.size) {
print("${list[i]} ")
}
// A B C
val list = listOf("A", "B", "C")
for (i in list.size - 1 downTo 0) {
print("${list[i]} ")
}
// C B A
val list = listOf("A", "B", "C")
for (i in 0 until list.size step 2) { // 指定步长
print("${list[i]} ")
}
// A C
for-in
或 forEach
forEachIndexed
或 withIndex
reversed()
+ for-in
MutableIterator
(在迭代中安全删除)val list = listOf("A", "B", "C")
for (item in list.reversed()) {
print("$item ")
}
// C B A
val mutableList = mutableListOf("A", "B", "C")
val iterator = mutableList.iterator()
while (iterator.hasNext()) {
if (iterator.next() == "B") iterator.remove()
}
println(mutableList)
// [A, C]