So erstellen Sie eine 2-Wege-Karte in Java
Brauche ich eine Datenstruktur zum speichern von string-int-Wert-Paare in einer 1:1-Beziehung, und in der Lage zu sehen die entweder aus wie Ihr Gegenstück.
Schrieb ich eine Klasse mit einer Hashtable und einem String-array gespeichert und die Daten 2 mal und verwendet die eingebauten Funktionen für lookup.
Meine Frage ist, ist es ein schöner Weg, dies zu erreichen? Und von schöner, ich meine, effiziente und nicht die Speicherung der Daten 2 mal, und vorzugsweise ohne eine Tonne code :P.
Kommentar zu dem Problem
Sehen Sie diese einfache Antwort stackoverflow.com/a/39329515/5466401
Mögliche Duplikate von Java eine HashMap mit reverse lookup?
InformationsquelleAutor der Frage sekmet64 | 2010-08-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, wie Sie suchen können, für eine bimap.
Den Google-Sammlungen (heute ein Teil von Guave) enthält eine
BiMap
- Schnittstelle mit ein paar Implementierungen.Aus der
BiMap
Dokumentation:Den
BiMap.inverse
Methode erscheint, um wieder eineMap
mit den Werten als Schlüssel, und der Schlüssel als die Werte, so dassMap
können verwendet werden, um call -get
auf den Wert und finde einen Schlüssel.Neben der
Map
zurückgegebeninverse
ist ein Blick auf die zugrunde liegenden Daten, so dass Sie nicht haben, um zusätzliche Kopien der ursprünglichen Daten.Aus der
BiMap.inverse
Methode Dokumentation:InformationsquelleAutor der Antwort coobird
Können Sie tun, eine einfache Implementierung sieht. Bitte beachten Sie, dass die Daten nicht kopiert werden in dieser Implementierung. Nur die Referenzen sind ! Ich habe Implementierung für add und get. entfernen und andere erforderliche Methode sind Links als übung 🙂
Und natürlich Ihrer Anwendungen Verantwortung entstehen auch die 'Werte' sind einzigartig. Beispiel:
InformationsquelleAutor der Antwort Gopi
Apache Commons gehört auch die BidiMap (Bi-Direktionale Anzeigen).
InformationsquelleAutor der Antwort Alex B
Den Google Collections Framework hat eine BiMap das tut, was Sie wollen.
InformationsquelleAutor der Antwort jqno
Mit Guave,
Lesen Sie die vollständige tutorial hier.
InformationsquelleAutor der Antwort SohailAziz
Erstellen einer hashmap, Karten Objekt-zu-Objekt - dann können Sie die gleiche Karte zum speichern von String -> Integer " und "Integer" - > String.
Beim hinzufügen einer string/int-pair-Mädchen, fügen Sie es einfach in beide Richtungen auf der gleichen map.
InformationsquelleAutor der Antwort Dave Kirby