Одним із можливих застосувань Lookup
може бути зворотний зв'язок Dictionary
.
Припустимо, у вас телефонна книга реалізована як Dictionary
букет із (унікальними) іменами як ключі, кожне ім’я пов'язане з номером телефону. Але двоє людей з різними іменами можуть мати один і той же номер телефону. Це не проблема дляDictionary
, що не важливо, щоб дві клавіші відповідали одному і тому ж значенню.
Тепер ви хочете шукати, кому належить даний номер телефону. Ви будуєте Lookup
, додаючи все KeyValuePairs
від свого Dictionary
, але назад, зі значенням як ключем, а ключ як значенням. Тепер ви можете запитувати номер телефону та отримати список імен усіх людей, чий номер телефону є. Створення даних Dictionary
з тими самими даними може знижувати дані (або виходити з ладу, залежно від того, як ви це зробили)
dictionary["555-6593"] = "Dr. Emmett Brown";
dictionary["555-6593"] = "Marty McFly";
означає, що другий запис перезаписує перший - Doc більше не в списку.
Намагання записати ті самі дані трохи по-іншому:
dictionary.Add("555-6593", "Dr. Emmett Brown");
dictionary.Add("555-6593", "Marty McFly");
викине виняток на другий рядок, оскільки ви не можете Add
ввести ключ, який вже є Dictionary
.
[Звичайно, ви можете використовувати деякі інші структури даних одного , щоб зробити пошуки в обох напрямках, і т.д. Цей приклад означає , що ви повинні регенерувати Lookup
з Dictionary
кожної пори останньої зміни. Але для деяких даних це може бути правильним рішенням.]