如何在Kotlin中对两个数组按照相同规则实现同步排序
问题原因
你的代码排序逻辑错误:toSortedMap方法传入的比较器compareByDescending<Double> { list[it] }是使用Map的value作为排序依据,而非你需要的key本身降序排序,因此输出结果不符合预期。
修正后代码
fun main() { val letters = arrayOf("one", "two", "three") val digits = arrayOf(2.36, 1.1, 3.0) val map = mutableMapOf<Double, String>() // 直接复用repeat的下标参数,无需额外定义计数变量 repeat(3) { index -> map[digits[index]] = letters[index] } // 传入按key本身降序的比较器 val sortedMap = map.toSortedMap(compareByDescending { it }) // 分别输出排序后的key数组和value数组 println(sortedMap.keys.toList()) println(sortedMap.values.toList()) }
运行输出
[3.0, 2.36, 1.1] [three, one, two]
优化说明
- 优先使用
val声明无需变更的变量,符合Kotlin开发规范 - 直接使用
repeat方法自带的下标参数,避免额外定义全局计数变量降低出错概率
内容的提问来源于stack exchange,提问作者Laba Diena
相关产品推荐
相关产品推荐

