Maison >Java >javaDidacticiel >Comment récupérer les clés des valeurs HashMap en Java ?

Comment récupérer les clés des valeurs HashMap en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-14 08:52:11340parcourir

How to Retrieve Keys from HashMap Values in Java?

Récupération des clés des valeurs HashMap

En Java, lorsque vous travaillez avec des Hashmaps, il peut y avoir des situations où vous avez une valeur et souhaitez l'obtenir sa clé correspondante. Pour ce faire, plusieurs méthodes sont disponibles.

Parcourir les entrées

L'approche la plus simple consiste à parcourir toutes les entrées du HashMap :

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

Renvoyer la première clé correspondante

Si vous avez un mappage un-à-un, vous pouvez renvoyer la première clé correspondante :

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

Utilisation des flux Java 8

Pour les utilisateurs de Java 8, vous pouvez utiliser des flux pour code plus concis :

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

Si vous préférez utiliser Guava, pensez à utiliser son BiMap pour les cartographies bidirectionnelles :

BiMap<Token, Character> tokenToChar = 
    ImmutableBiMap.of(Token.LEFT_BRACKET, '[', Token.LEFT_PARENTHESIS, '(');
Token token = tokenToChar.inverse().get('(');
Character c = tokenToChar.get(token);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn