1. 简介
在 Kotlin 开发中,数组是一个非常常见的数据结构。而查找某个元素在数组中的索引,是开发过程中经常遇到的任务之一。无论是初学者还是有经验的 Kotlin 开发者,掌握这些查找方法都非常有必要。
本文将介绍多种在 Kotlin 中查找数组元素索引的方法,并附有示例代码说明,方便你在实际开发中灵活使用。
2. 使用 indexOf()
方法
indexOf()
是查找元素索引最直接的方法。它会返回第一个匹配元素的索引,如果未找到则返回 -1
。
✅ 适用于查找第一个出现的元素。
@Test
fun `Find index using indexOf`() {
val numbers = arrayOf(1, 2, 3, 4, 5)
val elementToFind = 3
val index = numbers.indexOf(elementToFind)
assertEquals(2, index)
}
3. 使用 indexOfFirst()
方法
indexOfFirst()
允许我们通过一个 lambda 表达式来定义查找条件,返回第一个满足条件的元素索引,找不到则返回 -1
。
✅ 适用于需要条件判断的查找场景。
@Test
fun `Find index of first`() {
val numbers = arrayOf(1, 2, 3, 4, 3, 5)
val elementToFind = 3
val index = numbers.indexOfFirst { it == elementToFind }
assertEquals(2, index)
}
4. 使用 lastIndexOf()
方法
lastIndexOf()
类似于 indexOf()
,但它是从后往前查找,返回最后一个匹配元素的索引,找不到则返回 -1
。
✅ 适用于查找最后一个出现的元素。
@Test
fun `Find last index of element`() {
val numbers = arrayOf(1, 2, 3, 4, 3, 5)
val elementToFind = 3
val lastIndex = numbers.lastIndexOf(elementToFind)
assertEquals(4, lastIndex)
}
5. 使用 indexOfLast()
方法
indexOfLast()
和 indexOfFirst()
类似,但它是查找最后一个满足条件的元素索引,找不到则返回 -1
。
✅ 适用于需要条件判断并查找最后一个匹配项的场景。
@Test
fun `Find index of last`() {
val numbers = arrayOf(1, 2, 3, 4, 3, 5)
val elementToFind = 3
val index = numbers.indexOfLast { it == elementToFind }
assertEquals(4, index)
}
6. 使用循环手动查找
当我们需要查找所有匹配元素的索引时,可以使用循环遍历数组进行查找。
✅ 适用于查找多个匹配项的场景。
@Test
fun `Find indices using loop`() {
val numbers = arrayOf(1, 2, 3, 4, 3, 5)
val elementToFind = 3
val indices = mutableListOf<Int>()
for (i in numbers.indices) {
if (numbers[i] == elementToFind) {
indices.add(i)
}
}
assertEquals(listOf(2, 4), indices)
}
7. 总结
在 Kotlin 中查找数组元素的索引有多种方式,选择哪一种取决于具体使用场景:
方法名称 | 说明 | 是否支持条件判断 | 是否查找所有匹配项 |
---|---|---|---|
indexOf() |
查找第一个匹配项 | ❌ | ❌ |
indexOfFirst() |
查找第一个满足条件的元素 | ✅ | ❌ |
lastIndexOf() |
查找最后一个匹配项 | ❌ | ❌ |
indexOfLast() |
查找最后一个满足条件的元素 | ✅ | ❌ |
loop |
手动遍历数组查找所有匹配项 | ✅ | ✅ |
⚠️ 踩坑提醒:所有方法在找不到元素时都返回 -1
,记得做判断处理,避免空指针或逻辑错误。
如需查看完整示例代码,欢迎访问 GitHub 仓库。