Maison > Java > javaDidacticiel > Comment récupérer des clés à partir de valeurs dans un Java HashMap ?

Comment récupérer des clés à partir de valeurs dans un Java HashMap ?

Barbara Streisand
Libérer: 2024-12-19 08:59:09
original
403 Les gens l'ont consulté

How to Retrieve Keys from Values in a Java HashMap?

Récupération de clés à partir de valeurs dans des Hashmaps Java

Dans un HashMap Java, récupérer la clé correspondant à une valeur spécifique peut être utile dans divers scénarios . Voici une exploration complète de la façon d'accomplir cette tâche :

Approche basée sur une boucle :

La méthode traditionnelle pour obtenir la clé d'une valeur consiste à parcourir le HashMap. entrées. Pour chaque entrée, comparez la valeur à celle souhaitée. Si une correspondance est trouvée, la clé correspondante peut être récupéré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

Récupération de clé pour les mappages un-à-un :

Dans les scénarios où chaque valeur correspond à une seule clé, l'approche basée sur la boucle peut être simplifiée pour 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;
}
Copier après la connexion

Java Approche 8 Stream :

Pour les utilisateurs de Java 8 et versions ultérieures, les opérations de flux peuvent fournir un moyen concis de récupérer les clés.

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

BiMap de Guava :

Alternativement, pour les utilisateurs de la bibliothèque Guava, la structure de données BiMap peut être particulièrement utile. Il fournit un mappage bidirectionnel entre les clés et les valeurs, permettant une récupération efficace des clés et des valeurs.

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