Một lần sử dụng Lookup
có thể đảo ngược một Dictionary
.
Giả sử bạn có danh bạ được triển khai dưới dạng Dictionary
với một nhóm (duy nhất) tên làm khóa, mỗi tên được liên kết với 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 một số Dictionary
, điều này không quan tâm hai khóa tương ứng với cùng một giá trị.
Bây giờ bạn muốn có cách tìm kiếm ai là số điện thoại cụ thể thuộc về. Bạn tạo Lookup
, thêm tất cả KeyValuePairs
từ Dictionary
của bạn, nhưng ngược lại, với giá trị là khóa và khóa làm giá trị. Bây giờ bạn có thể truy vấn một số điện thoại và nhận 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
với cùng một dữ liệu sẽ thả dữ liệu (hoặc không, tùy thuộc vào cách bạn đã làm nó), vì làm
dictionary["555-6593"] = "Dr. Emmett Brown";
dictionary["555-6593"] = "Marty McFly";
có nghĩa là mục thứ hai ghi đè đầu tiên - Doc 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 nhau:
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 kể từ khi bạn không thể Add
một chìa khóa mà đã nằm 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 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, đó có thể là giải pháp phù hợp.]
Tôi nghĩ để làm cho câu trả lời này tốt hơn, bạn có thể thay thế một số lọ. Đối với mục đích học tập, tôi nghĩ rằng nó dễ dàng hơn để làm theo, khi các loại được thể hiện rõ ràng. Chỉ cần 2 xu của tôi :) –
Nếu nó có tốt nhất của cả hai thế giới, thì tại sao phải bận tâm với một từ điển? –
@KyleBaran: Bởi vì nó sẽ là vô nghĩa đối với bộ sưu tập cặp khóa/giá trị chính hãng, nơi chỉ có một giá trị cho mỗi khóa. –