java中的Hashcode契约?

M S*_*ach 1 java

每当在执行Java应用程序期间多次在同一对象上调用它时,hashCode方法必须始终返回相同的整数,前提是不修改对象的equals比较中使用的信息

上面的语句是在hashcode契约下的http://download.oracle.com/javase/6/docs/api/java/lang/Object.html#hashCode ()上编写的.

我对声明有疑问,即

如果没有在对象的等比较中使用的信息被修改

即使我们修改equals方法仍然hashcode将返回相同的整数.因此,哈希码值取决于对象的等价比较.

Amo*_*are 7

好问题.来自equals()文档,

请注意,通常需要在重写此方法时覆盖hashCode方法,以便维护hashCode方法的常规协定,该方法声明相等对象必须具有相等的哈希代码.

  • 更好的说法是hashcode应该使用equals使用的严格属性子集. (2认同)