java hashmap: alle values durchgehen und key suchen?

... komplette Frage anzeigen

2 Antworten

Du kannst über die Map Entrys iterieren:

for (Map.Entry entry : hMap.entrySet()) {
    if ("Two".equals(entry.getValue()) {
        return entry.getKey()
    }
}

Wenn solche zugriffe häufiger sind solltest du eine Bidirektionale Map verwenden - zum beispiel eine BiMap aus dem Google Guava Framework.

Kommentar von TeeTier
11.10.2016, 05:17

Daumen hoch für den letzten Absatz! Ein wichtiger Hinweis, denke ich! :)

Die erweiterte for-Schleife mit "hMap.entrySet()" bereitet mir sogar bei einmaligem Aufruf schon Schmerzen ... Zumindest bei mehr als einer Hand voll Einträge. ><

Wer dabei noch keine Schmerzen hat, bitte mal den Profiler anschmeißen und Javas Map mit Googles BiMap (oder einer eigenen Implementierung) vergleichen! :)

2

Das kannst du mithilfe der Methode "containsValue(Object value)" überprüfen:

if(hMap.containsValue("Two"))

...

Kommentar von TeeTier
11.10.2016, 05:20

Beim Überprüfen eines einzigen Eintrages ist deine Antwort die Lösung der Wahl, aber beim Iterieren die Antwort von "DexterNemrod".

Was genau die Intention des Fragenstellers ist, kann er nur selbst entscheiden. Das geht aus der Frage irgendwie nicht so klar hervor. :)

0
Kommentar von Fregrin
11.10.2016, 08:36

Beantwortet die Frage ja ungefähr gar nicht:
"also möchte ich z.B. den Key von "Two" bekommen."

1

Was möchtest Du wissen?