使用できるキーでソートするには
map.toSortedMap()
しかし、LinkedHashMapをKotlinの値で並べ替える最良の方法は何ですか?
map.toList()
.sortedBy { (key, value) -> value }
.toMap()
Alex Filatov の答えへの追加:
最初の引数は空白のままにすることができます( 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) ->
// ...
}
_
あなたが複雑な答えを受け入れた理由は私にはありません。
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
関数に渡すだけです