Heim >Java >javaLernprogramm >Wie finde ich Schlüssel, die bestimmten Werten in einer HashMap zugeordnet sind?

Wie finde ich Schlüssel, die bestimmten Werten in einer HashMap zugeordnet sind?

Susan Sarandon
Susan SarandonOriginal
2024-12-18 22:38:111022Durchsuche

How to Find Keys Associated with Specific Values in a HashMap?

Suchen von Schlüsseln, die mit Werten in HashMap verknüpft sind

Bei der Arbeit mit Hashmaps ist es oft notwendig, Schlüssel basierend auf bestimmten Werten abzurufen. Es gibt mehrere Ansätze, um diese Aufgabe in Java zu erfüllen.

Eine Möglichkeit besteht darin, das EntrySet() der HashMap zu durchlaufen und den Wert jedes Eintrags mit dem gewünschten zu vergleichen:

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

Wenn Sie es erwarten Wenn Sie eine Eins-zu-Eins-Beziehung zwischen Schlüsseln und Werten haben, können Sie den ersten passenden Schlüssel abrufen:

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

In Java 8 können Sie Streams nutzen prägnanterer Code:

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

Alternativ bietet die Guava-Bibliothek für Situationen mit bidirektionalen Zuordnungen BiMap, das direkte Schlüsselwertsuchen ermöglicht und umgekehrt. Zum Beispiel:

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 finde ich Schlüssel, die bestimmten Werten in einer HashMap zugeordnet sind?. 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