2017-08-09 1 views
0

Existe-t-il un moyen élégant d'inverser l'ordre des éléments de LinkedHashMap dans Scala?Comment inverser l'ordre des éléments LinkedHashMap dans Scala

Par exemple, j'ai un LinkedHashMap [Integer, String] comme:

[1, "one"] 
[2, "two"] 
[3, "three"] 

Quelle est la meilleure façon d'obtenir un LinkedHashMap [Integer, String] comme:

[3, "three"] 
[2, "two"] 
[1, "one"] 

Répondre

1
import scala.collection.mutable.LinkedHashMap 

val linked = LinkedHashMap(1 -> "one", 2 -> "two", 3 -> "three") 

val reversed = LinkedHashMap(linked.toSeq.reverse: _*) 
// reversed: scala.collection.mutable.LinkedHashMap[Int, String] = Map(3 -> three, 2 -> two, 1 -> one) 
+0

Merci. Découvert le '_ *' pour moi-même :) – Strig

1

Vous pouvez faire

val reverse = for ((key, value) <- map) yield (value, key) 

Notez que ce ne sera pas à jour l'ancien LinkedHashMap, mais retournera une nouvelle o ne.

+0

Ceci inverse les clés et les valeurs; il n'inverse pas l'ordre des éléments, ce que veut le PO. – chunjef

+0

en effet, je cherche comment inverser l'ordre des entrées de la carte – Strig

+0

Désolé, vous avez raison, je l'ai mélangé. – Bruno