Trong hầu hết các trường hợp, trong đó các chuỗi bên trong mảng của bạn không phải là bệnh lý và không bao gồm dấu phẩy theo sau dấu cách, bạn có thể sử dụng Arrays.toString()
làm khóa duy nhất. tức là Map
của bạn sẽ là Map<String, T>
. Và get/put cho một mảng myKeys[]
sẽ là
T t = myMap.get(Arrays.toString(myKeys));
myMap.put(Arrays.toString(myKeys), myT);
Rõ ràng bạn có thể đặt một số mã bao bọc nếu muốn.
Một hiệu ứng phụ tốt đẹp là chìa khóa của bạn hiện không thể thay đổi. Tất nhiên, bạn thay đổi mảng myKeys và sau đó thử một số get()
, bạn sẽ không tìm thấy nó.
Hashing of Strings được tối ưu hóa cao.Vì vậy, của tôi đoán là giải pháp này, mặc dù nó cảm thấy hơi chậm và kludgy, sẽ nhanh hơn và hiệu quả hơn bộ nhớ (phân bổ ít đối tượng hơn) so với giải pháp @Ted Hopp sử dụng Danh sách bất biến. Chỉ cần suy nghĩ về việc liệu Arrays.toString()
là duy nhất cho các phím của bạn. Nếu không, hoặc nếu có bất kỳ nghi ngờ nào, (ví dụ: String [] xuất phát từ đầu vào của người dùng), hãy sử dụng Danh sách.
Không; mảng không ghi đè 'hashCode()'. – SLaks
Liên quan chặt chẽ đến [câu hỏi tương tự về 'Set's] (http://stackoverflow.com/questions/9841934/how-to-make-a-set-of-array-in-java). – Raedwald