如何从 Kotlin 数组中获取值的索引?
我现在最好的解决方案是使用:
val max = nums.max()
val maxIdx = nums.indices.find({ (i) -> nums[i] == max }) ?: -1
有没有更好的办法?
如果要获取最大元素的索引,可以使用“maxBy”函数:
val maxIdx = nums.indices.maxBy { nums[it] } ?: -1
它更有效,因为它只会遍历数组一次。
使用当前的 Kotlin (1.0),您可以在数组上使用indexOf()
扩展函数:
val x = arrayOf("happy","dancer","jumper").indexOf("dancer")
在您的示例中:
val maxIdx = nums.indexOf(nums.max())
如果要根据某个谓词查找项目,则可以使用indexOfFirst
和indexOfLast
扩展函数。
val strings = arrayOf("hello","world","hello")
val firstHelloIndex = strings.indexOfFirst { it == "hello" }
val lastHelloIndex = strings.indexOfLast { it == "hello" }