indexOf in Kotlin Arrays

2020-04-02 05:18发布

问题:

How do I get the index of a value from a Kotlin array?

My best solution right now is using:

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

is there a better way?

回答1:

If you want to get the index of the maximum element you can use 'maxBy' function:

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

It is more efficient since it will traverse the array only once.



回答2:

With current Kotlin (1.0) you can use indexOf() extension function on arrays:

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

All extension functions for arrays are found in the api reference.

In your example:

val maxIdx = nums.indexOf(nums.max())


标签: arrays kotlin