Une utilisation de Lookup
pourrait être d'inverser un Dictionary
.
Supposons que vous ayez un répertoire téléphonique implémenté en tant que Dictionary
avec un tas de noms (uniques) comme clés, chaque nom étant associé à un numéro de téléphone. Mais deux personnes ayant des noms différents peuvent partager le même numéro de téléphone. Ce n'est pas un problème pour un Dictionary
qui ne se soucie pas que deux clés correspondent à la même valeur.
Maintenant, vous voulez un moyen de chercher à qui appartient un numéro de téléphone donné. Vous construisez un Lookup
en ajoutant tous les KeyValuePairs
de votre Dictionary
mais à l'envers, avec la valeur comme clé et la clé comme valeur. Vous pouvez maintenant interroger un numéro de téléphone et obtenir une liste de noms de toutes les personnes dont c'est le numéro de téléphone. Construire un Dictionary
avec les mêmes données perdrait les données (ou échouerait, selon la façon dont vous l'avez fait), puisque le fait de faire
dictionary["555-6593"] = "Dr. Emmett Brown";
dictionary["555-6593"] = "Marty McFly";
signifie que la deuxième entrée écrase la première - le Doc n'est plus répertorié.
J'essaie d'écrire les mêmes données d'une manière légèrement différente :
dictionary.Add("555-6593", "Dr. Emmett Brown");
dictionary.Add("555-6593", "Marty McFly");
jetterait une exception sur la deuxième ligne puisque vous ne pouvez pas Add
une clé qui se trouve déjà dans le Dictionary
.
[Bien entendu, vous pouvez utiliser une autre structure de données unique pour effectuer des recherches dans les deux sens, etc. Cet exemple signifie que vous devez régénérer le fichier Lookup
de la Dictionary
chaque fois que ce dernier change. Mais pour certaines données, cela pourrait être la bonne solution].