Maison >Java >javaDidacticiel >Comment récupérer les clés d'un HashMap compte tenu de ses valeurs ?

Comment récupérer les clés d'un HashMap compte tenu de ses valeurs ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-18 08:46:10729parcourir

How to Retrieve Keys from a HashMap Given Its Values?

Récupération de clés à partir de HashMaps en fonction de valeurs

Étant donné une HashMap avec des valeurs stockées par rapport à des clés, explorons comment récupérer la clé correspondant à un valeur spécifique.

Valeur à multiple Clés :

Si une paire clé-valeur peut correspondre à plusieurs valeurs, vous devrez parcourir les entrées et filtrer celles ayant la valeur souhaitée :

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

Value-to-Single Key :

S'il existe un mappage un-à-un entre les clés et les valeurs, vous pouvez directement renvoyer le 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 :

Avec les flux Java 8, vous pouvez filtrer et mapper les entrées plus efficacement :

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 BiMap :

Si vous utilisez Guava, le La collection BiMap offre un moyen plus pratique de travailler avec des mappages inverses :

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