2017-07-28 33 views
8

Để sắp xếp theo phím Tôi có thể sử dụngCách sắp xếp LinkedHashMap theo các giá trị trong Kotlin?

map.toSortedMap() 

Nhưng cách tốt nhất để sắp xếp LinkedHashMap bởi giá trị trong Kotlin là gì?

+1

bạn nên thực hiện của riêng bạn 'Map', nếu không bạn không thể đảm bảo trật tự sau khi' put's tiếp theo. và 'SortedMap' chỉ hỗ trợ [Key] (http://docs.oracle.com/javase/8/docs/api/java/util/SortedMap.html#comparator--). –

Trả lời

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

Chỉ cần một sự bổ sung để Alex Filatov 's câu trả lời:

Bạn có thể để đối số đầu tiên trống (since Kotlin 1.1)

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

hoặc bạn có thể sử dụng cú pháp tham khảo

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

và nếu bạn muốn lặp lại kết quả ngay lập tức, bạn thậm chí không cần t ông toMap() gọi vì bạn có thể destructure mỗi cặp danh sách những thứ tương tự như vậy:

map.toList().sortedBy(Pair<*, String>::second).forEach { (key, value) -> 
    // ... 
} 
Các vấn đề liên quan