TAILIEUCHUNG - Effective Java Programming Language Guide phần 3

Một hàm băm tốt có xu hướng để tạo ra mã hash bất bình đẳng cho các đối tượng bất bình đẳng. Điều này là chính xác những gì có nghĩa là việc cung cấp thứ ba của hợp đồng hashCode. Lý tưởng nhất, một hàm băm phân phối bất kỳ bộ sưu tập hợp lý các trường hợp không đồng đều thống nhất trên tất cả các giá trị băm có thể. | Effective Java Programming Language Guide A good hash function tends to produce unequal hash codes for unequal objects. This is exactly what is meant by the third provision of the hashCode contract. Ideally a hash function should distribute any reasonable collection of unequal instances uniformly across all possible hash values. Achieving this ideal can be extremely difficult. Luckily it is not too difficult to achieve a fair approximation. Here is a simplerecipe 1. Store some constant nonzero value say 17 in an int variable called result. 2. For each significant field f in your object each field taken into account by the equals method that is do the following a. Compute an int hash code c for the field i. If the field is a boolean compute f 0 1 . ii. If the field is a byte char short or int compute int f. iii. If the field is a long compute int f f 32 . iv. If the field is a fl oat compute f . v. If the field is a double compute f and then hash the resulting long as in step . vi. If the field is an object reference and this class s equals method compares the field by recursively invoking equals recursively invoke hashcode on the field. If a more complex comparison is required compute a canonical representation for this field and invoke hashcode on the canonical representation. If the value of the field is null return 0 or some other constant but 0 is traditional . vii. If the field is an array treat it as if each element were a separate field. That is compute a hash code for each significant element by applying these rules recursively and combine these values as described in step . b. Combine the hash code c computed in step a into result as follows result 37 result c 3. Return result. 4. When you are done writing the hashcode method ask yourself whether equal instances have equal hash codes. If not figure out why and fix the problem. It is acceptable to exclude redundant fields from the hash code computation.

TỪ KHÓA LIÊN QUAN
TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.