2016-11-15 5 views
1

Ich arbeite an einem Projekt, wo ich Schlüssel/Werte mit mehreren doppelten Schlüsseln speichern muss. Obwohl es viele neue Implementierungen wie Apache Commons und Guava gibt, basieren sie meistens auf einem einzelnen Schlüssel mit mehreren Werten wie unten.Java-Datenstrukturen: Karte mit doppelten Schlüsseln und Sortieren nach Werten

Ich brauche doppelte Schlüssel mit der Möglichkeit, die Karte nach Werten und nicht nach Schlüsseln zu sortieren. Es bedeutet eine Kartendatenstruktur, die vollständig auf Position basiert und nach Werten sortiert.

Bitte lassen Sie mich wissen, wenn es Implementierungen oder Ideen gibt, um das gleiche zu implementieren.

+3

Es klingt wie du fragst 2 Fragen: 1) [Wie erstelle ich eine Karte mit doppelten Schlüsseln?] (http://stackoverflow.com/questions/1062960/map-implementation-with-duplicate-keys) 2) [Wie sortiere ich ein Karte nach Wert?] (http://stackoverflow.com/questions/109383/sort-a-mapkey-value-by-values-java) – shmosel

+1

Wenn Sie es als zwei Fragen trennen, dann gibt es viele Antworten bereits dafür verfügbar .... aber ich brauche die Karte mit doppelten Schlüsseln, um nach Werten sortiert zu sein ... –

+0

Durch "Fähigkeit, die Karte zu sortieren", meinst du, dass du oft iterierst, also muss es ein beibehalten Sortierreihenfolge, oder meinst du nur, dass du gelegentlich iterierst, also ist die Sortierleistung zu Beginn einer Iteration in Ordnung? – Andreas

Antwort

1

In diesem Fall sollten Sie Ihre eigene Map Klasse erstellen und Code auf Ihre eigene Weise schreiben.

Oder Sie können einfach den Code von HashMap Klasse in Ihre Klasse kopieren und dann Änderungen in diesem Code vornehmen, um auf Ihre Weise zu arbeiten. Sie können den Code HashMap Klasse von src.zip Datei finden, die in Ihrem JDK Installationsverzeichnis vorhanden sein wird.

0

Erstellen Sie eine benutzerdefinierte Klasse mit Ihrem Schlüssel als Eigenschaft und einem Bezeichner, um zu bestimmen, ob zwei Objekte dieser Klasse gleich sind .... Überschreiben Sie die equals- und hashcode-Methode Ihrer benutzerdefinierten Klasse und verwenden Sie Objekte Ihrer benutzerdefinierten Klasse als Schlüssel von Ihrer Karte ..... der Wert kann der Wert sein, der dem ursprünglichen Schlüssel entspricht ..... der Trick hier ist, mit optimalem hashcode zu kommen und entspricht Implementierungen, um weniger Zusammenstöße zu gewährleisten ...

Verwandte Themen