2017-07-28 118 views
8

要按键,我可以使用如何使用Kotlin中的值对LinkedHashMap进行排序?

map.toSortedMap() 

但是,什么是在科特林值进行排序的LinkedHashMap的最佳方式?

+1

你应该实现自己的'Map',否则无法后续'put's后保证顺序。和'SortedMap'只支持[Key](http://docs.oracle.com/javase/8/docs/api/java/util/SortedMap.html#comparator--)。 –

回答

13
map.toList() 
    .sortedBy { (key, value) -> value } 
    .toMap() 
0

只是一个除了Alex Filatov的回答是:

你可以离开的第一个参数空白(since Kotlin 1.1

map.toList().sortedBy { (_, value) -> value }.toMap() 

,或者您可以使用引用语法

map.toList().sortedBy(Pair<*, String>::second).toMap() 

,如果你想马上迭代结果,你甚至不需要t他toMap()通话,因为你可以解构每对列表中的像这样:

map.toList().sortedBy(Pair<*, String>::second).forEach { (key, value) -> 
    // ... 
} 
相关问题