Java HashMap: Key von gegebenen Index bekommen?
Hi.
Wie kann ich mit Java von einer HashMap den Key von "Hallo" bekommen?
(Hallo ist ein Value)
Ich weiß, wie ich den Value bekomme, aber wie bekomme ich den Key?
Gruß, MineMuse07
1 Antwort
den Key von "Hallo" oder von Index 1 bekommen?
Eine HashMap kennt keinen "Index". Sie garantiert auch keine Reihenfolge von Keys oder Values. Es gibt Map-Implementierungen, die Reihenfolgen garantieren, aber die HashMap tut es nicht.
Wenn du von Value auf Key kommen willst, wirst du durch die Keys iterieren müssen (oder sowas wie eine BiMap bauen bzw. aus einer Library wie Guava verwenden).
Schau dir doch nochmal genau an, wie eine Map überhaupt definiert ist.
Wie gesagt, das geht so nicht. Eine Map bildet Keys auf Values ab, nicht umgekehrt. Die Values müssen auch nicht einzigartig sein, d.h. es kann natürlich gleiche Values für verschiedene Keys geben - welcher ist dann "der Key"?
Wenn man so eine Anforderung hat besteht eine gute Chance, dass eine Map die falsche Datenstruktur für die Aufgabenstellung ist.
Was sollte ich sonst nehmen? Ich muss exakt 2 Werte speichern, die zueinander gehören..
Vielleicht ist es besser "Hallo" als Key zu verwenden? Wofür konkret brauchst du die Map?
Das hängt davon ab, wie das Verwendungsmuster ist. Wenn du wirklich ständig eines als Key und dann wieder das andere als Key verwenden willst (d.h. schnell den jeweils anderen, zugehörigen Wert finden), dann wirst du vielleicht wirklich eine BiMap verwenden. Das scheint mir aber ein seltener Fall zu sein.
Wenn das nicht passt, tut es vielleicht eine simple List oder ein Set solcher Paare, das du dann linear durchsuchst. Wenn's nur um ein paar Dutzend Paare oder so geht ist das von der Effizienz her wahrscheinlich egal.
Willst du meistens von Key auf Value, aber nur selten in die andere Richtung, bleib bei der Map und such im zweiteren Fall einfach linear das EntrySet durch.
oh ja sorry, da hab ich mich vertan... klar es muss heißen: Den Key von "Hallo" bekommen