Tôi có một lớp mà tôi muốn thiết lập làm khóa trong HashMap. Tôi đã triển khai phương thức compareTo cho lớp đó. Nhưng vẫn còn khi tôi làm:Đặt lớp của riêng làm khóa trong java Hashmap
map.put(new MyKey(dummyArguements) , dummyValue); System.out.println(map.get(new MyKey(dummyArguements)));
Tôi nhận được giá trị rỗng. Vì vậy, điều đó có nghĩa là hashmap không thể xác định rằng hai phím (để nhận được & gọi điện) giống nhau.
Có thể ai đó giúp tôi ở đây không?
Tôi có nghĩa là không thiếu tôn trọng (tôi cũng không tin điều này là đúng), nhưng ** cách bạn biết điều này? Tôi đã đọc tài liệu ['HashMap'] (http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html) nhiều lần; các giao diện và kế thừa sau đây .... và không có gì từ xa ngụ ý các phương thức được đề cập ở trên cần được triển khai cũng như không ghi đè (vì chúng đã được thừa hưởng từ lớp gốc của đối tượng '') để nó hoạt động đúng với 'HashMap'. –
Định nghĩa của một số phương pháp trên giao diện Bản đồ thiết lập một số quy tắc. Ví dụ: containsKey() cụ thể đề cập bằng equals().Tài liệu hashCode() trên Object xác định mối quan hệ giữa nó và equals(). Tuy nhiên, tôi đồng ý với quan điểm của bạn - tài liệu HashMap nên tham khảo phương thức hashCode() và tài liệu nó sử dụng/yêu cầu cho các khóa của HashMap. –
Ngoài ra, lớp học của bạn phải là 'không thay đổi' – Sadegh