Um uso de Lookup
poderia ser reverter a Dictionary
.
Suponha que você tenha uma lista telefônica implementada como um Dictionary
com vários nomes (exclusivos) como chaves, cada nome associado a um número de telefone. Mas duas pessoas com nomes diferentes podem compartilhar o mesmo número de telefone. Isso não é um problema para a Dictionary
, que não se importa que duas chaves correspondam ao mesmo valor.
Agora você deseja descobrir a quem pertence um determinado número de telefone. Você constrói umLookup
, adicionando tudo KeyValuePairs
do seu Dictionary
, mas para trás, com o valor como chave e a chave como valor. Agora você pode consultar um número de telefone e obter uma lista de nomes de todas as pessoas cujo número de telefone é esse. Criar um Dictionary
com os mesmos dados eliminaria os dados (ou falharia, dependendo de como você o fez), já que fazer isso
dictionary["555-6593"] = "Dr. Emmett Brown";
dictionary["555-6593"] = "Marty McFly";
significa que a segunda entrada substitui a primeira - o Doc não está mais listado.
Tentando escrever os mesmos dados de uma maneira ligeiramente diferente:
dictionary.Add("555-6593", "Dr. Emmett Brown");
dictionary.Add("555-6593", "Marty McFly");
lançaria uma exceção na segunda linha, pois você não pode Add
uma chave que já esteja na Dictionary
.
[Obviamente, você pode querer usar alguma outra estrutura de dados única para fazer pesquisas nas duas direções, etc. Este exemplo significa que você precisa regenerar Lookup
a Dictionary
cada vez que ela mudar. Mas para alguns dados, pode ser a solução certa.]