24

如何从 Kotlin 数组中获取值的索引?

我现在最好的解决方案是使用:

val max = nums.max()
val maxIdx = nums.indices.find({ (i) -> nums[i] == max }) ?: -1

有没有更好的办法?

4

3 回答 3

28

如果要获取最大元素的索引,可以使用“maxBy”函数:

val maxIdx = nums.indices.maxBy { nums[it] } ?: -1

它更有效,因为它只会遍历数组一次。

于 2013-12-25T16:40:08.363 回答
12

使用当前的 Kotlin (1.0),您可以在数组上使用indexOf()扩展函数:

val x = arrayOf("happy","dancer","jumper").indexOf("dancer")

数组的所有扩展函数都可以在api 参考中找到。

在您的示例中:

val maxIdx = nums.indexOf(nums.max())
于 2015-12-29T20:13:20.633 回答
1

如果要根据某个谓词查找项目,则可以使用indexOfFirstindexOfLast扩展函数。

val strings = arrayOf("hello","world","hello")
val firstHelloIndex = strings.indexOfFirst { it == "hello" }
val lastHelloIndex  = strings.indexOfLast  { it == "hello" }
于 2021-08-24T04:01:10.370 回答