Maison > Java > javaDidacticiel > Comment trouver des clés associées à des valeurs spécifiques dans un HashMap ?

Comment trouver des clés associées à des valeurs spécifiques dans un HashMap ?

Susan Sarandon
Libérer: 2024-12-18 22:38:11
original
955 Les gens l'ont consulté

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

Recherche de clés associées à des valeurs dans HashMap

Lorsque vous travaillez avec des hashmaps, il est souvent nécessaire de récupérer des clés en fonction de valeurs spécifiques. Il existe plusieurs approches pour accomplir cette tâche en Java.

Une option consiste à parcourir le EntrySet() du HashMap et à comparer la valeur de chaque entrée à celle 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;
}
Copier après la connexion

Si vous attendez une relation un-à-un entre les clés et les valeurs, vous pouvez récupérer 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;
}
Copier après la connexion

Dans Java 8, vous pouvez exploiter les flux pour un 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());
}
Copier après la connexion

Alternativement, pour les situations avec des mappages bidirectionnels, la bibliothèque Guava fournit BiMap qui propose des recherches directes de valeurs-clés et vice-versa. Par exemple :

BiMap<Token, Character> tokenToChar = 
    ImmutableBiMap.of(Token.LEFT_BRACKET, '[', Token.LEFT_PARENTHESIS, '(');
Token token = tokenToChar.inverse().get('(');
Character c = tokenToChar.get(token);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal