Heim >Java >javaLernprogramm >Wie kann ich Schlüssel aus Werten in einer Java HashMap abrufen?

Wie kann ich Schlüssel aus Werten in einer Java HashMap abrufen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-15 21:15:20498Durchsuche

How Can I Retrieve Keys from Values in a Java HashMap?

Abrufen von Schlüsseln aus Werten in Java HashMap

HashMap ist eine wertvolle Java-Datenstruktur zum Speichern von Schlüssel-Wert-Paaren. Während das Abrufen von Werten aus Schlüsseln unkompliziert ist, kann das Abrufen von Schlüsseln aus Werten eine größere Herausforderung darstellen. Hier sind mehrere effiziente Methoden, um dies zu erreichen:

Eins-zu-Viele-Zuordnungen

In Situationen, in denen mehrere Schlüssel einem einzelnen Wert zugeordnet werden können, können Sie darüber iterieren HashMap-Einträge und sammeln Sie alle passenden Schlüssel:

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

Eins-zu-Eins Zuordnungen

Wenn jeder Wert einem eindeutigen Schlüssel zugeordnet ist, können Sie den ersten übereinstimmenden Schlüssel zurückgeben:

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 Approach

Java 8 bietet eine praktische Methode zum Filtern und Sammeln von Übereinstimmungen Schlüssel:

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

In Fällen, in denen die bidirektionale Kartierung erforderlich ist, sollten Sie die Verwendung von Guava's BiMap in Betracht ziehen:

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 kann ich Schlüssel aus Werten in einer Java HashMap abrufen?. 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