Wie sortiere ich eine MultiMapk, v in Java?

8

Gibt es einen Grund, MultiMap in Java zu sortieren und wie geht das?

    
exebook 05.11.2008, 04:53
quelle

3 Antworten

1

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?

    
boutta 07.11.2008 07:10
quelle
1

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.

    
SCdF 07.11.2008 06:08
quelle
0

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.

    
Artur Biesiadowski 18.10.2016 07:17
quelle

Tags und Links