J'ai un Map[Long, String]
que je voudrais parcourir dans l'ordre décroissant des touches. La façon dont j'ai choisi de le faire est la suivante:Scala TreeMap étrangeté; mettre en œuvre une commande d'ordre inverse
var m: SortedMap[Long, String] = TreeMap.empty((l: Long) => -l)
m ++= Map(2L -> "Hello", 1L -> "World", 3L -> "Chris")
println(m) //Map(3 -> Chris, 1 -> World, 2 -> Hello)
Je ne suis pas sûr que je comprends pourquoi cela n'a pas fonctionné et ne peut que supposer que je l'ai fait une erreur stupide. Bien sûr, les travaux suivants:
var m: SortedMap[Long, String] = TreeMap.empty((l: Long) => new Ordered[Long] {
def compare(a: Long) = -l.compare(a)
})
m ++= Map(2L -> "Hello", 1L -> "World", 3L -> "Chris")
println(m) //Map(3 -> Chris, 2 -> Hello, 1 -> World)
J'ai supposé que la vue était appliquée aux clés à la fois comme cible et comme paramètre de la comparaison (c'est-à-dire '(-3L) .compare (-1L)' –