kotlin 按照数组中出现的次数进行排序
时间: 2023-11-01 10:07:39 浏览: 59
你可以使用 Kotlin 的 `groupBy` 函数将数组中的元素按照出现次数分组,然后根据每个元素在分组中的数量进行排序。
具体来说,代码可以如下所示:
```kotlin
fun sortByFrequency(arr: IntArray): IntArray {
// 将元素按照出现次数分组
val groups = arr.groupBy { it }
// 按照出现次数排序
return arr.sortedByDescending { groups[it]?.size }.toIntArray()
}
```
这里的 `groupBy` 函数将数组中的元素按照值分组,并返回一个 `Map` 对象,其中键为元素的值,值为所有等于该值的元素组成的列表。然后我们可以使用 `sortedByDescending` 函数对数组进行排序,排序的关键字是元素在分组中的数量。
下面是一个示例,演示了如何使用这个函数:
```kotlin
fun main() {
val arr = intArrayOf(1, 4, 2, 2, 3, 4, 1, 5, 1)
val sortedArr = sortByFrequency(arr)
println(sortedArr.contentToString()) // [1, 1, 1, 4, 4, 2, 2, 3, 5]
}
```
在这个示例中,输入的数组是 `[1, 4, 2, 2, 3, 4, 1, 5, 1]`,按照元素出现的次数排序后,得到的数组是 `[1, 1, 1, 4, 4, 2, 2, 3, 5]`。