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
579 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!

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