Heim > Java > javaLernprogramm > Wie rufe ich Schlüssel aus Werten in einer Java HashMap ab?

Wie rufe ich Schlüssel aus Werten in einer Java HashMap ab?

Barbara Streisand
Freigeben: 2024-12-19 08:59:09
Original
454 Leute haben es durchsucht

How to Retrieve Keys from Values in a Java HashMap?

Abrufen von Schlüsseln aus Werten in Java-Hashmaps

In einer Java-HashMap kann das Abrufen des Schlüssels, der einem bestimmten Wert entspricht, in verschiedenen Szenarien nützlich sein . Hier finden Sie eine umfassende Erläuterung, wie Sie diese Aufgabe erfüllen können:

Schleifenbasierter Ansatz:

Die traditionelle Methode zum Erhalten des Schlüssels aus einem Wert besteht darin, die HashMaps zu durchlaufen Einträge. Vergleichen Sie für jeden Eintrag den Wert mit dem gewünschten. Wenn eine Übereinstimmung gefunden wird, kann der entsprechende Schlüssel abgerufen werden.

public static <T, E> Set<T> getKeysByValue(Map<T, E> map, E value) {
    Set<T> keys = new HashSet<>();
    for (Entry<T, E> entry : map.entrySet()) {
        if (Objects.equals(value, entry.getValue())) {
            keys.add(entry.getKey());
        }
    }
    return keys;
}
Nach dem Login kopieren

Schlüsselabruf für Eins-zu-Eins-Zuordnungen:

In Szenarien, in denen jeder Wert zugeordnet ist Auf nur einen Schlüssel kann der schleifenbasierte Ansatz vereinfacht werden, um den ersten übereinstimmenden Schlüssel zurückzugeben.

public static <T, E> T getKeyByValue(Map<T, E> map, E value) {
    for (Entry<T, E> entry : map.entrySet()) {
        if (Objects.equals(value, entry.getValue())) {
            return entry.getKey();
        }
    }
    return null;
}
Nach dem Login kopieren

Java 8 Stream-Ansatz:

Für Benutzer von Java 8 und höher können Stream-Operationen eine prägnante Möglichkeit zum Abrufen von Schlüsseln bieten.

public static <T, E> Set<T> getKeysByValue(Map<T, E> map, E value) {
    return map.entrySet()
              .stream()
              .filter(entry -> Objects.equals(entry.getValue(), value))
              .map(Map.Entry::getKey)
              .collect(Collectors.toSet());
}
Nach dem Login kopieren

Guava's BiMap:

Alternativ kann für Benutzer der Guava-Bibliothek die BiMap-Datenstruktur besonders nützlich sein. Es bietet eine bidirektionale Zuordnung zwischen Schlüsseln und Werten und ermöglicht so einen effizienten Abruf von Schlüsseln und Werten.

BiMap<Token, Character> tokenToChar = 
    ImmutableBiMap.of(Token.LEFT_BRACKET, '[', Token.LEFT_PARENTHESIS, '(');
Token token = tokenToChar.inverse().get('(');
Character c = tokenToChar.get(token);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie rufe ich Schlüssel aus Werten in einer Java HashMap ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage