Maison >Java >javaDidacticiel >Comment récupérer des clés à partir de valeurs dans un 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; }
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; }
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()); }
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);
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!