Eigentlich weiß ich nicht, warum Sie eine Karte sortieren wollen. Eine Map ist ein Wörterbuch und Sie erhalten von diesem Wörterbuch einen (oder im Falle von Multimaps eine Sammlung von) Werten, die Sie interessieren.
Im Fall einer MultiMap möchten Sie vielleicht die Collection sortieren, die aus einem get resultiert. Aber welchen Vorteil haben Sie durch eine sortierte Karte, da es nichts beschleunigt, wenn Sie einen bestimmten Wert finden?
Angenommen, Sie sprechen über org.apache.commons.collections.MultiMap
, dann kannst du nicht; da es ein Collection
und nicht ein List
zurückgibt, unterstützt es nicht das Konzept der Ordnung.
Wenn Sie über sprechen org.apache.commons.collections.MultiHashMap
, dann müssen Sie nur über die Schlüssel iterieren, das ArrayList
zurückholen und es mit Collections.sort()
sortieren.
Das setzt voraus, dass Sie diese Implementierung jedoch verwenden .
Es hindert Sie nicht daran, Ihre eigene MultiMap
ziemlich einfach zu implementieren, die Sortierlisten unterstützt. Es kann so einfach sein wie HashMap<K, Collection<V>>
, ich bin nicht vertraut mit der Funktionsweise von MultiMaps.
Die einfachste Lösung ist die Verwendung von TreeMultimap aus Guava. Verwenden Sie entweder direkt
%Vor%Wenn Ihre Schlüssel und Werte natürlich sortierbar sind (vergleichbares implementieren) oder
%Vor%, wenn Sie benutzerdefinierte Komparatoren bereitstellen müssen.
Wenn Sie wissen, dass Sie es sortiert brauchen und sich nicht um die Abrufgeschwindigkeit kümmern, können Sie natürlich TreeMap von Anfang an verwenden.
Dann können Sie über TreeMap iterieren oder etwas wie values () oder Einträge verwenden, um eine sortierte Sammlung zu erhalten.
Tags und Links java