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

Kotlin中如何正确获取ArrayList的元素索引值?

如何正确获取ArrayList中元素的索引?

你当前的代码:

val countryCodeList = arrayListOf(*resources.getStringArray(R.array.countryCodes))
val countryIndex = countryCodeList.indexOf("+1")

仅能返回0或-1,核心问题是你的列表元素并非单独的国家码,而是包含国家码和国家名称的完整字符串(从日志的[+82, Korea]、[+1, USA]可以看出)。indexOf方法是做完全匹配,只有当元素完全等于"+1"时才会返回对应索引,其他情况因为元素是"+X, 国家名"的格式,完全匹配不上,所以返回-1。

解决方案

根据你的元素格式,提供两种可行的处理方式:

1. 直接遍历匹配前缀/分割匹配

如果元素是"国家码, 国家名"的格式,推荐先分割字符串再精准匹配,避免误判:

val targetCode = "+1"
// 分割元素后取第一个部分(国家码)匹配
val countryIndex = countryCodeList.indexOfFirst {
    it.split(",").firstOrNull()?.trim() == targetCode
}

如果确定国家码一定是元素的开头,也可以用startsWith简化:

val countryIndex = countryCodeList.indexOfFirst { it.startsWith(targetCode) }

indexOfFirst会返回第一个符合条件的元素索引,找不到则返回-1。

2. 提前转换为结构化数据

如果后续需要频繁操作国家码和名称,建议先把数组转换成Pair列表,让数据结构更清晰:

// 将原数组转换为(国家码, 国家名)的Pair列表
val countryList = resources.getStringArray(R.array.countryCodes).map {
    val parts = it.split(",")
    Pair(parts[0].trim(), parts[1].trim())
}
// 直接匹配Pair中的国家码
val countryIndex = countryList.indexOfFirst { it.first == "+1" }

这种方式不仅查找更直观,后续获取对应国家名称也更方便:countryList[countryIndex].second。

验证

比如针对日志中的[+1, USA]元素,无论它在列表的第几位,以上两种方式都能正确返回它的索引值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:40:29