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
Barbara StreisandOriginal
2024-12-19 08:59:09392Durchsuche

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;
}

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;
}

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());
}

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);

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!

Stellungnahme:
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