【发布时间】:2016-09-09 02:14:11
【问题描述】:
假设我有以下课程
public class DualKey {
int key1;
int key2;
// getters, setters and constructors go here
public void equals(Object obj) {
if (obj == null || ! obj instanceOf DualKey)
return false;
return this.key1 == obj.key1 || this.key1 == obj.key2 || this.key2 == obj.key1 || this.key2 == obj.key2;
}
}
是否可以以保留 equals 和 hashcode 合约的方式覆盖 hashcode?p>
PS:我意识到定义一个比较器可能会更好,但我正在使用 spark,其中定义相等的唯一方法是覆盖 equals 方法。
【问题讨论】:
-
不,根据您的实际设置,这是不可能的(除非您只返回
0这将保留合同“如果相等,则哈希码也必须相等”但您会有大量的冲突)