Có thể ai đó vui lòng giải thích cho tôi phương pháp HashMap # hash (int) tĩnh không?Giải thích phương thức HashMap # hash (int)
Lý do đằng sau nó để tạo ra băm phân phối đồng đều là gì?
/**
* Applies a supplemental hash function to a given hashCode, which
* defends against poor quality hash functions. This is critical
* because HashMap uses power-of-two length hash tables, that
* otherwise encounter collisions for hashCodes that do not differ
* in lower bits. Note: Null keys always map to hash 0, thus index 0.
*/
static int hash(int h) {
// This function ensures that hashCodes that differ only by
// constant multiples at each bit position have a bounded
// number of collisions (approximately 8 at default load factor).
h ^= (h >>> 20)^(h >>> 12);
return h^(h >>> 7)^(h >>> 4);
}
Ví dụ sẽ giúp tiêu hóa dễ dàng hơn.
Làm rõ Tôi biết về toán tử, bảng chân lý và hoạt động bitwise. Tôi thực sự không thể giải mã việc thực hiện cũng như bình luận thực sự. Hoặc thậm chí là lý do đằng sau nó.
Bạn đang sử dụng phiên bản Java nào? Tôi không thể tìm thấy bất kỳ phương thức băm (int) tĩnh nào ở bất kỳ đâu – tom
Xin lỗi đó là HashMap. – qnoid
Tôi đã chỉnh sửa câu hỏi gốc để chứa thêm nhận xét từ nguồn, vì lợi ích của người khác. – polygenelubricants