Câu hỏi này ban đầu bị sai lệch, xem EDIT bên dưới. Tôi sẽ để nó theo ngữ cảnh.Cấu trúc dữ liệu ánh xạ một-một (A, B) với getKey (B) trong O (1)?
Tôi đã suy nghĩ về các cách thông minh để xây dựng bản đồ tính từ (tức là một đối một). Ánh xạ một hàm A-> B (nhiều-một) về cơ bản là những gì HashMap (A, B) thực hiện. Nếu bây giờ tôi muốn có một cấu trúc dữ liệu thực hiện một cái gì đó một-với-một với chứa() trong O (1), sẽ có một cái gì đó trong các thư viện chuẩn java mà tôi có thể sử dụng? Tâm trí bạn, tôi không cần điều này cho bất cứ điều gì ngay bây giờ, đây chỉ là một cái gì đó tôi nghĩ về gần đây và không thể đưa ra một cấu trúc dữ liệu cho, vì vậy câu trả lời không phải là một vội vàng. Có lớp học như thế không? Nếu không, bạn nghĩ tại sao?
Tất cả những gì tôi có thể tìm thấy trên SO là những thứ về ngủ đông, điều đó không giúp ích gì cho tôi.
CHỈNH SỬA: Câu hỏi của tôi bị ốm phrased, do đó, một số giải thích là do.
Điều tôi muốn nói là ánh xạ "lạc hậu" B-> A. HashMap (A, B) có chứa (A) và chứa (B) cả trong O (1), vì vậy đó không phải là những gì tôi có nghĩa là, xin lỗi vì sự nhầm lẫn. Những gì tôi có nghĩa là, có một bản đồ datastructure A < -> B có getValue (A) và getKey (B) trong O (1)?
Tôi nhận ra điều này có thể được thực hiện với hai HashMaps (A, B) và (B, A) được duy trì để chứa cùng quan hệ, nhưng tôi cảm thấy có một cấu trúc dữ liệu xử lý mà không cần phải làm "thủ công".
Chỉ cần mở rộng lớp A và thêm thuộc tính trả về B phù hợp với bạn? –
Vì vậy, bạn muốn HashMap không làm gì? Nó có thể được sử dụng cho ánh xạ một-một. –
@PeterLawrey là HashMap.contains trong java O (1)? –