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

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

Linda Hamilton
Libérer: 2024-12-15 21:15:20
original
499 Les gens l'ont consulté

How Can I Retrieve Keys from Values in a Java HashMap?

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

HashMap est une structure de données Java précieuse pour stocker des paires clé-valeur. Bien que la récupération de valeurs à partir de clés soit simple, la récupération de clés à partir de valeurs peut s'avérer plus difficile. Voici plusieurs méthodes efficaces pour y parvenir :

Mappages un-à-plusieurs

Dans les situations où plusieurs clés peuvent correspondre à une seule valeur, vous pouvez parcourir le Entrées de HashMap et collectez toutes les clés correspondantes :

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

One-to-One Mappages

Lorsque chaque valeur correspond à une clé unique, 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;
}
Copier après la connexion

Approche Java 8 Stream

Java 8 fournit une méthode pratique pour filtrer et collecter les correspondances 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

Pour les cas où la cartographie bidirectionnelle est requise, pensez à utiliser BiMap de Guava :

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