Tôi đang tìm một cấu trúc dữ liệu thích hợp cho vấn đề của mình. Tôi muốn có thể chọn các đối tượng nút hiệu quả nhất có thể bằng hai phím. Chèn và xóa cũng cần phải hiệu quả. Về cơ bản, mỗi đối tượng nút có một cặp hai khóa. Các cặp là duy nhất nhưng các khóa riêng lẻ thì không. Tôi cần để có thể chọn một nhóm các nút có giá trị cụ thể cho một trong hai khóa.Tạo một bản đồ băm bằng một khóa kép
Ví dụ:
node1 có các phím a1 và b1
node2 có các phím a1 và b2
Node3 có các phím a2 và b2
Tôi muốn ví dụ có thể để chọn nút có khóa a1, b1 nhưng cũng tất cả các nút có b2 là key2.
Tất nhiên tôi có thể tạo hai HashMaps (một cho mỗi khóa) nhưng đây là một giải pháp tồi tệ vì khi tôi thêm hoặc xóa thứ gì đó tôi sẽ phải làm trong cả hai bản đồ. Vì sẽ có rất nhiều việc thêm và xóa đi, tôi muốn làm điều này trong một lần nữa. Có ai có bất kỳ ý tưởng về làm thế nào để làm điều này? Rõ ràng là có một khóa duy nhất kết hợp hai khóa lại với nhau không giải quyết được vấn đề vì tôi cũng cần có khả năng tìm kiếm một khóa duy nhất mà không phải tìm kiếm thông qua toàn bộ bản đồ. Điều đó sẽ không hiệu quả lắm. Vấn đề là một vấn đề hiệu quả. Tôi chỉ có thể tìm kiếm mọi mục nhập trong bản đồ cho một khóa cụ thể nhưng thay vào đó tôi muốn sử dụng một hàm băm để tôi có thể chọn nhiều đối tượng nút bằng cách sử dụng một trong hai khóa ngay lập tức.
Tôi không tìm kiếm thứ gì giống như MultiKeyMap vì trong cấu trúc dữ liệu này, khóa đầu tiên luôn giữ nguyên, bạn chỉ có thể thêm khóa thay vì thay thế khóa đầu tiên bằng một khóa khác. Tôi muốn có thể chuyển đổi giữa khóa đầu tiên và khóa thứ hai.
Tôi thực hiện và không muốn lưu trữ nhiều đối tượng bằng cùng một khóa. Nếu bạn nhìn vào ví dụ bạn có thể thấy rằng hai khóa với nhau luôn là duy nhất. Điều này có thể được xem như là một khóa duy nhất do đó tôi sẽ không lưu trữ nhiều đối tượng dưới cùng một khóa. Nhưng nếu bạn nhìn vào các khóa riêng lẻ, chúng không phải là duy nhất do đó tôi muốn lưu trữ nhiều đối tượng được tham chiếu bởi các khóa riêng lẻ.
bạn đang tìm kiếm một cái gì đó như [this] (http://commons.apache.org/collections/apidocs/org/apache/commons/collections/map/MultiKeyMap.html)? – aishwarya
bạn có muốn lưu trữ nhiều đối tượng bằng cùng một khóa không? –