2014-02-20 14 views
7

Ich möchte eine Datenstruktur, die von Schlüssel zu Objekt und umgekehrt (im Gegensatz zu HashMaps, die nur in einer einzigen Richtung zuordnen). Eine Idee könnte sein, die HashMap in sich für umgekehrtes Aussehen zu speichern -up, aber es wird ein ineffizienter Ansatz sein.Beste Datenstruktur für Zwei-Wege-Mapping

Was wäre die beste Implementierung für Zwei-Wege-Mapping?

+9

Werfen Sie einen Blick auf [BiMap] (http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/BiMap.html) –

+0

https://stackoverflow.com/ Fragen/13314905/Datenstruktur-mit-Zwei-Wege-o1-Lookup-Hashtable – Anwar

Antwort

9

Einfachste Idee: Wrapper-Klasse, die 2 Karten enthält, zweite mit vertauschten Schlüsseln/Werten. Sie werden O (1) Komplexität beibehalten und nur etwas mehr Speicher verwenden, da Sie (wahrscheinlich) reference zum Objekt behalten werden.

+0

Ich erwähnte diese Idee in Frage selbst, aber ich denke, es könnte bessere Implementierungen in Bezug auf Effizienz geben. – Tanay

+3

Warum denken Sie, dass es ineffizient sein wird? Sie werden 'O (1)' Komplexität behalten. – IProblemFactory

+0

@TanaySoni Starten Sie einfach und suchen Sie nur nach Ineffizienzen, wenn Sie wirklich brauchen. Verfügen Sie über Metriken, die diesen Ansatz als potenziellen Engpass in Ihrem System signalisieren? –

Verwandte Themen