不对。
两个对象的 equals() 相等,则它们的 hashCode() 一定相等;
反之不一定成立。
hashCode() 方法给对象返回一个 hashcode 值。这个方法被用于 hash tables,例如 HashMap。
它的性质是:
- 在一个Java应用的执行期间,如果一个对象提供给 equals() 做比较的信息没有被修改的话,该对象多次调用 hashCode() 方法,该方法必须始终如一返回同一个整数(integer)。
- 如果两个对象根据 equals(Object) 方法是相等的,那么调用二者各自的 hashCode() 方法必须产生同一个整数(integer)结果。
- 并不要求根据equals(java.lang.Object)方法不相等的两个对象,调用二者各自的 hashCode() 方法必须产生不同的整数(integer)结果。然而,程序员应该意识到对于不同的对象产生不同的integer结果,有可能会提高 hash table 的性能。