You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin中如何在for循环内获取列表项的索引?

嘿,我来帮你搞清楚为啥会出现这个结果~

问题根源分析

你代码里的核心问题是混淆了列表元素和列表索引的概念:

  • 循环里的i是列表中的字符串元素(当匹配到"banana"时,i就是这个字符串本身)
  • 调用i.indices实际上是在调用字符串的indices属性,它返回的是这个字符串自身的字符索引范围。"banana"一共有6个字符,索引从0到5,所以输出就是0..5。
正确获取列表元素索引的几种方法

下面给你几种实用的写法,都能拿到"banana"在列表里的正确索引:

方式1:用withIndex()遍历(最推荐)

这个方法能同时拿到索引和对应元素,代码逻辑更清晰直观:

fun forLoopListItems() {
    val items = listOf("apple", "banana", "kiwifruit")
    for ((index, item) in items.withIndex()) {
        if (item == "banana") {
            println("position is $index")
        }
    }
}

方式2:调用列表的indexOf()方法

如果能确定列表里没有重复的"banana",可以直接用列表的indexOf()方法获取元素对应的索引:

fun forLoopListItems() {
    val items = listOf("apple", "banana", "kiwifruit")
    for (item in items) {
        if (item == "banana") {
            val position = items.indexOf(item)
            println("position is $position")
        }
    }
}

小提醒:如果列表里有多个"banana",indexOf()只会返回第一个匹配元素的索引哦。

方式3:直接遍历列表的索引范围

也可以先遍历列表的索引,再通过索引拿到对应的元素:

fun forLoopListItems() {
    val items = listOf("apple", "banana", "kiwifruit")
    for (index in items.indices) {
        val item = items[index]
        if (item == "banana") {
            println("position is $index")
        }
    }
}

内容的提问来源于stack exchange,提问作者Muhammed Haris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:29:31