Tôi cần lưu trữ bảng tra cứu làm thành viên cá thể trong một trong các lớp học của tôi. Bảng sẽ được khởi tạo khi đối tượng được xây dựng. Mỗi "hàng" sẽ có 3 "cột":Cấu trúc dữ liệu tốt nhất cho bảng tra cứu trong bộ nhớ này là gì?
StringKey (e.g., "car")
EnumKey (e.g., LookupKeys.Car)
Value (e.g, "Ths is a car.")
Tôi muốn chọn cấu trúc dữ liệu đó sẽ mang lại hiệu quả tốt nhất cho việc tra cứu hoặc bằng các StringKey hoặc các EnumKey.
Thật khó xử khi có 2 khóa cho cùng một giá trị từ điển. Tôi đã không bao giờ gặp phải điều này trước đây, vì vậy tôi tự hỏi những gì các tiêu chuẩn là cho loại điều.
Tôi có thể tạo cấu trúc Khóa/Giá trị/Giá trị thay vì Khóa/Khóa/Giá trị, nhưng tôi tự hỏi loại tác động hiệu suất nào sẽ có.
Tôi có nghĩ về điều này sai không?
OK - trong ví dụ của tôi, "trường hợp giá trị" chỉ là chuỗi. Tôi sẽ tạo 2 từ điển (một với StringKey, một với EnumKey) có giá trị chứa cùng một biến tham chiếu chuỗi. Điều đó có đúng không? –
Chính xác. Trong Python đó là tất cả để có nó. Trong Java, có một string.intern() đảm bảo rằng tất cả các chuỗi intern() 'd được giảm xuống một nhóm chuỗi chung, loại bỏ một số dư thừa có thể có. –
Tôi đang sử dụng C# ... bạn có biết nếu .NET sẽ tạo một bản sao của chuỗi khi tôi thêm nó vào mỗi từ điển? –