按键排序我可以使用
map.toSortedMap()
但是,通过Kotlin中的值对LinkedHashMap进行排序的最佳方法是什么?
答案 0 :(得分:25)
map.toList()
.sortedBy { (key, value) -> value }
.toMap()
答案 1 :(得分:1)
只是Alex Filatov回答的补充:
您可以将第一个参数留空(since Kotlin 1.1)
map.toList().sortedBy { (_, value) -> value }.toMap()
或者您可以使用参考语法
map.toList().sortedBy(Pair<*, String>::second).toMap()
如果你想立即迭代结果,你甚至不需要toMap()
调用,因为你可以像这样解构每一对列表:
map.toList().sortedBy(Pair<*, String>::second).forEach { (key, value) ->
// ...
}
答案 2 :(得分:1)
我不为什么你会接受这个复杂的答案。
var mapImmutable = mapOf<Int, Int>(1 to 11, 2 to 22, 3 to 33)
println(mapImmutable.toSortedMap(compareByDescending { mapImmutable[it] })) //{3=33, 2=22, 1=11}
mapImmutable[it]
是值
只需将其传递给compareBy
函数