Hợp đồng chung của hashCode được như Javadoc nói:
Bất cứ khi nào nó được gọi trên cùng một đối tượng nhiều hơn một lần trong một cuộc thi của một ứng dụng Java, các phương thức hashCode luôn phải trả lại số nguyên cùng, với điều kiện không thông tin được sử dụng bằng bằng so sánh trên đối tượng được sửa đổi. Số nguyên này không cần phải duy trì sự nhất quán từ một lần thực thi của một ứng dụng đến việc thực thi khác của cùng một ứng dụng.
Is the same word going to get the same hash every time that I run it?
Trong việc thực hiện các ứng dụng, cách gọi hashCode()
chữ bằng nhau (tôi giả sử từ này là một ví dụ String
và equals()
đã được ghi đè trong String
) sẽ trả về số nguyên cùng.
EDIT Vì javadoc cho String.hashCode()
chỉ định cách mã băm của chuỗi được tính, đó là xác định.
Returns a hash code for this string. The hash code for a String object is
computed as :
s[0]*31^(n-1) + s 1 *31^(n-2) + ... + s[n-1]
Tôi sẽ không đặt cược vào điều đó ... Nó thậm chí có thể xảy ra rằng băm có thể liên quan đến địa chỉ của đối tượng, và sau đó nó có thể thay đổi ngay cả từ một trong những chạy tiếp theo ... –
Xem http: //stackoverflow.com/questions/1516843/java-object-hashcode-result-constant-across-all-jvms-systems – Annabelle
Tại sao không yêu cầu một người bạn chạy một đoạn mã mẫu và xem? Tại sao không đăng đoạn mã nhỏ nói trên để tất cả chúng ta có thể làm điều đó? :) Điều đó đang được nói, tôi * không nghĩ rằng * hashCode đó là nhất quán giữa nhiều lần chạy, chỉ cho rằng một ở lại trong máy ảo. – Shark