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
Freigeben: 2024-12-18 22:38:11
Original
952 Leute haben es durchsucht

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;
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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());
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
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