為什么在重寫 equals 方法的時候需要重寫 hashCode 方法?
因為有強制的規(guī)范指定需要同時重寫 hashcode 與 equals 是方法,許多容器類,如 HashMap、HashSet 都依賴于 hashcode 與 equals 的規(guī)定。
有沒有可能兩個不相等的對象有相同的 hashcode?
有可能,兩個不相等的對象可能會有相同的 hashcode 值,這就是為什么在 hashmap 中會有沖突。相等 hashcode 值的規(guī)定只是說如果兩個對象相等,必須有相同的hashcode 值,但是沒有關于不相等對象的任何規(guī)定。
兩個相同的對象會有不同的 hash code 嗎?
不能,根據(jù) hash code 的規(guī)定,這是不可能的。