Jednym z zastosowań Lookup
może być odwrócenie pliku Dictionary
.
Załóżmy, że masz książkę telefoniczną zaimplementowaną jako zestaw Dictionary
(unikalnych) nazw jako kluczy, z których każda jest powiązana z numerem telefonu. Ale dwie osoby o różnych nazwach mogą mieć ten sam numer telefonu. Nie stanowi to problemu dla a Dictionary
, który nie przejmuje się tym, że dwa klucze odpowiadają tej samej wartości.
Teraz potrzebujesz sposobu na sprawdzenie, do kogo należy dany numer telefonu. Budujesz Lookup
, dodając wszystkie KeyValuePairs
z twojego Dictionary
, ale wstecz, z wartością jako kluczem i kluczem jako wartością. Możesz teraz zapytać o numer telefonu i uzyskać listę nazwisk wszystkich osób, których to numer telefonu. Budowanie Dictionary
z tymi samymi danymi spadnie dane (lub nie, w zależności od tego, jak to zrobił), ponieważ robi
dictionary["555-6593"] = "Dr. Emmett Brown";
dictionary["555-6593"] = "Marty McFly";
oznacza, że drugi wpis zastępuje pierwszy - dokumentu nie ma już na liście.
Próbuję zapisać te same dane w nieco inny sposób:
dictionary.Add("555-6593", "Dr. Emmett Brown");
dictionary.Add("555-6593", "Marty McFly");
zgłosiłby wyjątek w drugiej linii, ponieważ nie można Add
użyć klucza, który jest już w Dictionary
.
[Oczywiście, możesz chcieć użyć jakiejś innej pojedynczej struktury danych do wyszukiwania w obu kierunkach, itd. Ten przykład oznacza, że musisz ponownie wygenerować dane Lookup
z Dictionary
każdej zmiany tej ostatniej. Ale w przypadku niektórych danych może to być właściwe rozwiązanie.]