Une utilisation de Lookup
pourrait être d'inverser un Dictionary
.
Supposons que vous ayez un répertoire implémenté en tant que Dictionary
avec un ensemble de noms (uniques) comme touches, chaque nom étant associé à un numéro de téléphone. Mais deux personnes avec des noms différents peuvent partager le même numéro de téléphone. Ce n'est pas un problème pour a Dictionary
, qui ne se soucie pas que deux clés correspondent à la même valeur.
Vous voulez maintenant un moyen de rechercher à qui appartient un numéro de téléphone donné. Vous construisez un Lookup
, en ajoutant tous les à KeyValuePairs
partir de votre Dictionary
, mais vers l'arrière, 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 des noms de toutes les personnes dont le numéro de téléphone est. Construire un Dictionary
avec les mêmes données supprimerait des données (ou échouerait, selon la façon dont vous l'avez fait), depuis
dictionary["555-6593"] = "Dr. Emmett Brown";
dictionary["555-6593"] = "Marty McFly";
signifie que la deuxième entrée écrase la première - le document n'est plus répertorié.
Essayer 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");
lancerait une exception sur la deuxième ligne car vous ne pouvez pas Add
une clé qui est déjà dans le fichier Dictionary
.
[Bien sûr, vous voudrez peut-être 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 à Lookup
partir de Dictionary
chaque fois que ce dernier change. Mais pour certaines données, cela pourrait être la bonne solution.]