我正在研究Java程序。在程序中,有一个在该字段中具有整数数组的类。该课程必须满足以下一项要求:
对于此类的两个实例,如果两个对应的整数数组包含至少一个公共元素,则这两个类是"相等"。否则,他们并不平等。
覆盖"等于"并不困难。此类满足此要求的方法。但是,我在提出相应的Hash函数来覆盖hashCode方法时遇到了麻烦。任何人对这个类的哈希函数有什么想法?感谢。
答案 0 :(得分:3)
根据javadoc for equals()
,它必须是*传递性的:
对于任何非空引用值x,y和z,如果x.equals(y)返回true并且y.equals(z)返回true,则x.equals(z)应返回true。
您对equals()
的建议实施将违反以下示例案例:
x
包含1
y
包含1
和2
z
包含2
所以即使x
“等于”y
而y
“等于”z
,x
和z
也不会“平等”,因为不分享任何价值观。
因此,您的提案存在严重缺陷,您不应该实施它。
要回答您的问题,无法完成,因为如果没有您将实例与实例进行比较的上下文,hashCode()
将无法确定。