Tôi nhận thấy rằng trong Java, hashCode
cho HashMap
chỉ chứa các mục mà khóa và giá trị giống nhau, ví dụ: {1:1}
, {"abc":"abc"}
v.v. Có lý do nào đằng sau hành vi kỳ quặc này không?Tại sao HashCode không đối với HashMap chứa các giá trị giống như các khóa
6
A
Trả lời
11
Đây là hệ quả của số specification của hashCode()
cho Map.Entry
, yêu cầu mã băm của khóa và giá trị phải là xor'd.
Những người duy nhất có thể cho bạn biết lý do tại sao mã băm được chọn là những người đã viết ban đầu, mặc dù ấn tượng của tôi là Java hối tiếc xác định hàm băm (xấu) này.
Các vấn đề liên quan
- 1. Tại sao trình biên dịch Java không giống như int nguyên thủy như kiểu cho các giá trị trong HashMap?
- 2. Hashcode cho khóa NULL trong HashMap
- 3. Lấy chìa khóa của một hashmap với một loạt các con số như giá trị
- 4. A std :: map giống như vùng chứa ánh xạ các loại cho các giá trị
- 5. Tại sao giá trị của một lớp giá trị là hashCode của nó "không phải là một ý tưởng hay"?
- 6. trích xuất các giá trị từ HashMap
- 7. Tại sao HashMap lại phục hồi mã băm do đối tượng khóa cung cấp?
- 8. Bản đồ chứa chính nó như một giá trị;
- 9. Từ khóa giống như "giống như" (đối với không gian tên) trong Ruby
- 10. Sắp xếp một HashMap dựa trên Giá trị rồi Khóa?
- 11. Tại sao ValueType.GetHashCode() được triển khai giống như vậy?
- 12. Lấy tất cả các giá trị từ các khóa HashMap trong một ArrayList Java
- 13. Yêu cầu sao chép/di chuyển đối với các loại khóa/giá trị trong std :: map?
- 14. Tại sao các đối số không tạo() hoạt động giống như setProperties()?
- 15. Tại sao và như thế nào HashMap có thực hiện nội bộ riêng của hashCode() gọi là hash()?
- 16. Tại sao không ủy nhiệm công việc đối nghịch với các loại giá trị?
- 17. so sánh khóa hashmap, tại sao so sánh cả mã băm và khóa của khóa cả
- 18. Hợp nhất các khóa từ điển nếu các giá trị giống nhau
- 19. omu.valueinjecter bản sao sâu không giống như các loại
- 20. Lấy khóa từ HashMap bằng cách sử dụng giá trị
- 21. Chuỗi là khóa trong hashmap
- 22. scala hashmap nhiều giá trị
- 23. Cách thích hợp để lưu trữ các giá trị giống như mảng trong Firebase
- 24. Mảng JSON có thể chứa các đối tượng của các cặp khóa/giá trị khác nhau không?
- 25. Tại sao REST không có WSDL không giống như SOAP
- 26. Lưu trữ và truy xuất giá trị khóa Java HashMap
- 27. Mẫu phù hợp với các giá trị giống hệt nhau
- 28. Các chữ và giá trị có giống nhau không?
- 29. Return Giá trị đặt() trong HashMap: Java
- 30. matplotlib: mảng Lô NumPy với Không như các giá trị
Tôi ngại hỏi bạn đã học cách nào về hành vi này. Trả lời câu hỏi này dưới một phút là rất ấn tượng! – dasblinkenlight
@dasblinkenlight Có thể anh ta đã gặp nó và nghĩ về nó trước đây (như câu trả lời gián đoạn ngày của Thượng Hải nổi tiếng của Jon Skeet). Hoặc có thể điều đầu tiên anh ta làm khi nhìn thấy câu hỏi là tra cứu thực thi 'hashCode' trong' HashMap'. Dù bằng cách nào, nó vẫn còn khá ấn tượng. –
@dasblinkenlight dành cho * ai đó * làm việc rất nhiều với các thư viện cốt lõi; điều này thực sự nên được "ra khỏi kệ" .. – Eugene