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

die*_*mat 14 sorting kotlin

要按键排序,我可以使用

map.toSortedMap()
Run Code Online (Sandbox Code Playgroud)

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

小智 31

map.toList()
    .sortedBy { (key, value) -> value }
    .toMap()
Run Code Online (Sandbox Code Playgroud)


Wil*_*zel 5

您可以使用sortedBy解构语法并将第一个参数留空:

map.toList().sortedBy { (_, value) -> value }.toMap()
Run Code Online (Sandbox Code Playgroud)

或者你可以在不破坏语法的情况下做到这一点(如aksh1618在评论中提到的):

map.toList().sortedBy { it.second }.toMap()
Run Code Online (Sandbox Code Playgroud)

如果您想立即迭代结果,您甚至不需要toMap()

map.toList()
    .sortedBy { it.second }
    .forEach { (key, value) -> /* ... */ }
Run Code Online (Sandbox Code Playgroud)