Mặc định Map
triển khai dựa trên cơ sở băm và chúng không giữ nguyên thứ tự. Thay vì sử dụng scala.collection.mutable.LinkedHashMap
:
val newMap = list.sortBy(_._2).foldLeft(new LinkedHashMap[String, String]) {
(map, key) => map += (key._1 -> key._2)
map
}
Theo đề nghị của @Rex Kerr, scala.collection.immutable.ListMap
có thể là một lựa chọn tốt hơn cho loại mục tiêu:
val newMap = list.sortBy(_._2).foldLeft(new ListMap[String, String]) {
(map, key) => map + (key._1 -> key._2)
}
Hoặc (một lần nữa đầy đủ các khoản tín dụng nên đến @Rex Kerr):
val newMap = new ListMap() ++ list.sortBy(_._2)
Tuy nhiên bạn thực sự muốn đạt được điều gì? Hình như bạn có thể lựa chọn cấu trúc dữ liệu sai ...
Nguồn
2012-04-01 16:54:44
Tôi nghĩ bạn nên nêu rõ lý do tại sao bạn cần trả lại một "Bản đồ" và ý nghĩa của nó được sắp xếp mà bạn quan tâm. Ví dụ; sau đó bạn có muốn thêm cặp khóa-giá trị bổ sung không? –