Kotlin中遍历集合的方法

在 Kotlin 中,遍历 MutableList 有多种方式,可根据需求选择合适的方法,以下是常用遍历方式及示例:

1. for 循环遍历(最常用)

直接通过 for-in 循环遍历 MutableList,语法简洁,适用于大多数场景。

kotlin 复制代码
val mutableList = mutableListOf("A", "B", "C")

// 遍历元素
for (item in mutableList) {
    println(item) // 输出:A、B、C
}

// 遍历索引和元素(withIndex())
for ((index, item) in mutableList.withIndex()) {
    println("索引 $index:$item") // 输出:索引 0:A、索引 1:B、索引 2:C
}

2. 迭代器遍历(Iterator)

通过 iterator() 获取迭代器,手动控制遍历过程,支持在遍历中安全删除元素。

kotlin 复制代码
val mutableList = mutableListOf("A", "B", "C")
val iterator = mutableList.iterator()

while (iterator.hasNext()) {
    val item = iterator.next()
    println(item) // 输出:A、B、C

    // 遍历中删除元素(安全操作)
    if (item == "B") {
        iterator.remove() // 删除 "B",不会触发 ConcurrentModificationException
    }
}

println(mutableList) // 输出:[A, C]

3. forEach 遍历(函数式风格)

使用 forEach 扩展函数,简洁高效,适合不需要中断遍历的场景。

kotlin 复制代码
val mutableList = mutableListOf("A", "B", "C")

// 基本遍历
mutableList.forEach { item ->
    println(item) // 输出:A、B、C
}

// 简化写法(单个参数可省略 ->)
mutableList.forEach {
    println(it) // 输出:A、B、C
}

// 带索引的 forEachIndexed
mutableList.forEachIndexed { index, item ->
    println("索引 $index:$item") // 输出:索引 0:A、索引 1:B、索引 2:C
}

4. 遍历并修改元素

如果需要在遍历中修改元素,可通过索引遍历或 withIndex() 实现。

kotlin 复制代码
val mutableList = mutableListOf(1, 2, 3)

// 通过索引遍历修改
for (i in mutableList.indices) {
    mutableList[i] *= 2 // 元素翻倍
}

println(mutableList) // 输出:[2, 4, 6]

// 或用 withIndex() 修改
val list = mutableListOf("X", "Y", "Z")
for ((index, item) in list.withIndex()) {
    list[index] = item.lowercase() // 转为小写
}

println(list) // 输出:[x, y, z]

5. 其他遍历方式

  • listIterator() :双向迭代器,支持向前 / 向后遍历,适合复杂场景。

    kotlin 复制代码
    val mutableList = mutableListOf("A", "B", "C")
    val listIterator = mutableList.listIterator(mutableList.size) // 从末尾开始
    
    while (listIterator.hasPrevious()) {
        println(listIterator.previous()) // 输出:C、B、A
    }
  • for 循环 + 索引范围:手动控制索引范围,灵活但需注意边界。

    kotlin 复制代码
    val mutableList = mutableListOf("A", "B", "C")
    for (i in 0 until mutableList.size) {
        println(mutableList[i]) // 输出:A、B、C
    }

总结

  • 简单遍历 :优先用 for-inforEach
  • 需要索引 :用 withIndex()forEachIndexed
  • 遍历中删除 :必须用 Iteratoriterator()listIterator())。
  • 函数式风格 :用 forEachforEachIndexed

根据具体场景选择最合适的遍历方式即可。

相关推荐
序安InToo2 分钟前
第6课|注释与代码风格
后端·操作系统·嵌入式
xyy1232 分钟前
C#: Newtonsoft.Json 到 System.Text.Json 迁移避坑指南
后端
洋洋技术笔记5 分钟前
Spring Boot Web MVC配置详解
spring boot·后端
JxWang055 分钟前
VS Code 配置 Markdown 环境
后端
navms8 分钟前
搞懂线程池,先把 Worker 机制啃明白
后端
JxWang058 分钟前
离线数仓的优化及重构
后端
Nyarlathotep01139 分钟前
gin01:初探gin的启动
后端·go
JxWang0510 分钟前
安卓手机配置通用多屏协同及自动化脚本
后端
JxWang0511 分钟前
Windows Terminal 配置 oh-my-posh
后端
SimonKing27 分钟前
OpenCode AI编程助手如何添加Skills,优化项目!
java·后端·程序员