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
Freigeben: 2024-12-15 21:15:20
Original
498 Leute haben es durchsucht

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

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

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

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

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!

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