2012-03-28 35 views
5

Tại sao Java quyết định cho phép 'null' làm khóa trong HashMap? Như chúng ta biết hashcode() không thể được tính toán trên giá trị null. Có bất kỳ xem xét thiết kế cho quyết định này để cho phép null khóa trong HashMap mà không có trong Hashtable (Khác hơn là xem xét như là một giá trị mặc định)?Java - Lý do cho phép null là một khóa HashMap?

Trả lời

6

Từ JDK 1.2 Java Collections API Change Summary (không chắc chắn nơi để tìm phiên bản chính thức trên trang web của Oracle):

Added null-then chốt hỗ trợ cho HashMap. Điều này đã được thực hiện cho sự nhất quán với Bản đồ cây và Bản đồ Array không muộn, không có chủ ý và vì khách hàng đã yêu cầu. Bây giờ tất cả các mục đích chung của chúng tôi là triển khai chấp nhận các khóa, giá trị và các phần tử rỗng.

Joshua Bloch and Doug Lea disagreed on this và điều này gây ra sự cố cho concurrent hash maps.

Các vấn đề liên quan