Le implementazioni di default Map
sono basate su hash e non conservano l'ordine. Invece usano scala.collection.mutable.LinkedHashMap
:
val newMap = list.sortBy(_._2).foldLeft(new LinkedHashMap[String, String]) {
(map, key) => map += (key._1 -> key._2)
map
}
Come suggerito da @Rex Kerr, scala.collection.immutable.ListMap
potrebbe essere una scelta migliore per tipo di target:
val newMap = list.sortBy(_._2).foldLeft(new ListMap[String, String]) {
(map, key) => map + (key._1 -> key._2)
}
Or (ancora una volta pieni crediti dovrebbero andare a @Rex Kerr):
val newMap = new ListMap() ++ list.sortBy(_._2)
Tuttavia che cosa si vuole veramente raggiungere? Sembra che si potrebbe essere scegliendo struttura di dati sbagliato ...
fonte
2012-04-01 16:54:44
Penso che dovresti dichiarare il motivo per cui devi restituire una 'Mappa 'e che senso ha che ti interessa. Per esempio; successivamente desideri aggiungere coppie di valori-chiave in più? –