如何按Kotlin中的值对LinkedHashMap进行排序?

时间:2017-07-28 14:26:59

标签: sorting kotlin

按键排序我可以使用

map.toSortedMap()

但是,通过Kotlin中的值对LinkedHashMap进行排序的最佳方法是什么?

3 个答案:

答案 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函数