2010-10-23 3 views
4

Étant donné une carte, comment puis-je rechercher toutes les clés associées à une valeur particulière?Carte: Comment obtenir toutes les clés associées à une valeur?

Par exemple:

Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 
map.put(1, 5); 
map.put(2, 2); 
map.put(3, 5); 
Collection<Integer> keys = map.values(5); // should return {1, 3} 

Je suis à la recherche de quelque chose de similaire aux collections Google BiMap où les valeurs ne sont pas uniques.

Répondre

10

Avec java.util.Map simples implémentations, je crains que vous devez parcourir les entrées de carte et tester chaque valeur:

for (Map.Entry<Integer, Integer> entry : map.entrySet()) { 
    if (entry.getValue().equals(desiredValue) { 
    keys.add(entry.getKey()); 
    } 
} 

Si vous voulez une meilleure performance, vous pouvez vouloir construire une cartographie parallèle des valeurs aux listes des clés. Je ne connais aucune collection existante qui le fasse, mais cela ne devrait pas être difficile à mettre en œuvre.

Questions connexes