Java-Karte bekommen Schlüssel von Wert
unten ist mein code...
Map<Integer, String> MyType = sessionInfo.getType();
//{2=somename}
Ich versuche Schlüssel von Wert...ohne jedes Schleifen.....ist es möglich?
MyType.get("somename") //should output 2`
- In der Karte ist es nicht mehr möglich direkt Holen den Schlüssel für einen Wert.
- Was erwartest du, wenn die Werte gleich sind für mehrere Schlüssel??
- in meinem Fall.. die Werte nicht gleich auf allen ...
- Mögliche Duplikate von Java-Hashmap: Wie man Schlüssel von Wert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht leicht zu bekommen Schlüssel von Wert in der Hashtable oder HashMap, als im Vergleich zu immer mit dem Wert aus dem Schlüssel, weil die Hash-Map-oder Hashtable-nicht durchsetzen eins-zu-eins-Zuordnung zwischen Schlüssel und Wert in Map in Java. infact Karte ermöglicht selben Wert zugeordnet werden, der gegen mehrere Tasten im inneren HashMap, Hashtable oder andere Map-Implementierung.
Ich möchte zu fördern, läuft eine Schleife der Einfachheit halber. Es wird wahrscheinlich nicht Ihr Programm verlangsamen einen spürbaren Betrag.
Jedoch, wenn Sie nicht laufen eine Schleife, die Google Guava library hat eine Bidirektionale Map Collection genannt BiMap werden können (finden Sie hier). Die Karte funktioniert in beide Richtungen und garantiert zu jeder Zeit synchronisiert. Auch ich gehe davon aus, dass Sie eindeutige Werte in der Karte. Wenn Sie dies nicht tun, werden doppelte Werte werden nicht über eine bestimmte Taste zu verknüpfen.
Wieder, ich würde Sie nicht fördern, es sei denn absolut notwendig. Durchschleifen funktioniert völlig in Ordnung, in den meisten Fällen.
Entnommen diese SO beantworten
Ist dies nicht möglich. Sie müssen berücksichtigen, kann der Wert verdoppelt werden, in der Karte.
Ex, Wie gehen Sie mit {2=name} und {5=name}
Müssen Sie noch eine for-Schleife verwenden, um zu überprüfen Wert und get Schlüssel, und entscheiden, zu brechen, oder wenn der Wert abgestimmt.
Wenn Sie sicher sind, dass Ihre Werte eindeutig sind, können Sie iterieren über die Einträge der alten Karte .
Alternativ können Sie eine Bi-Direktionale Karte wie Guave enthält, und verwenden Sie die inverse () - Methode :