“等数组”的哈希函数

时间:2014-06-02 00:53:52

标签: java hash

我正在研究Java程序。在程序中,有一个在该字段中具有整数数组的类。该课程必须满足以下一项要求:

对于此类的两个实例,如果两个对应的整数数组包含至少一个公共元素,则这两个类是"相等"。否则,他们并不平等。

覆盖"等于"并不困难。此类满足此要求的方法。但是,我在提出相应的Hash函数来覆盖hashCode方法时遇到了麻烦。任何人对这个类的哈希函数有什么想法?感谢。

1 个答案:

答案 0 :(得分:3)

根据javadoc for equals(),它必须是*传递性的:

  

对于任何非空引用值x,y和z,如果x.equals(y)返回true并且y.equals(z)返回true,则x.equals(z)应返回true。

您对equals()的建议实施将违反以下示例案例:

  • x包含1
  • y包含12
  • z包含2

所以即使x“等于”yy“等于”zxz也不会“平等”,因为不分享任何价值观。

因此,您的提案存在严重缺陷,您不应该实施它。

要回答您的问题,无法完成,因为如果没有您将实例与实例进行比较的上下文,hashCode()将无法确定。