Một cách sử dụng Lookup
có thể là đảo ngược a Dictionary
.
Giả sử bạn có một danh bạ được triển khai dưới dạng một Dictionary
loạt các tên (duy nhất) làm khóa, mỗi tên được liên kết với một số điện thoại. Nhưng hai người có tên khác nhau có thể chia sẻ cùng một số điện thoại. Đây không phải là vấn đề đối với a Dictionary
, điều này không quan tâm đến việc hai khóa tương ứng với cùng một giá trị.
Bây giờ bạn muốn có một cách tìm kiếm một số điện thoại nhất định thuộc về ai. Bạn xây dựng một Lookup
, thêm tất cả KeyValuePairs
từ của bạn Dictionary
, nhưng ngược lại, với giá trị là khóa và khóa là giá trị. Bây giờ bạn có thể truy vấn một số điện thoại và có được một danh sách tên của tất cả những người có số điện thoại đó. Xây dựng một Dictionary
dữ liệu giống nhau sẽ làm mất dữ liệu (hoặc thất bại, tùy thuộc vào cách bạn đã thực hiện), kể từ khi thực hiện
dictionary["555-6593"] = "Dr. Emmett Brown";
dictionary["555-6593"] = "Marty McFly";
có nghĩa là mục thứ hai ghi đè lên mục thứ nhất - Tài liệu không còn được liệt kê.
Cố gắng viết cùng một dữ liệu theo một cách hơi khác:
dictionary.Add("555-6593", "Dr. Emmett Brown");
dictionary.Add("555-6593", "Marty McFly");
sẽ ném một ngoại lệ trên dòng thứ hai vì bạn không thể Add
là một khóa đã có trong Dictionary
.
[Tất nhiên, bạn có thể muốn sử dụng một số cấu trúc dữ liệu đơn lẻ khác để thực hiện tra cứu theo cả hai hướng, v.v. Ví dụ này có nghĩa là bạn phải tạo lại Lookup
từ Dictionary
mỗi lần thay đổi sau. Nhưng đối với một số dữ liệu, nó có thể là giải pháp phù hợp.]