我有一个 MultiKey 对象作为 Map 的键。
Key 由 Name (String) 和 ID (int) 组成。
必须完成以下合同:如果两个密钥的名称相等或两个密钥的 id 相同,则密钥必须相等。
我如何必须实现 hashCode() 函数才能不违反该合同?甚至可能吗?
实现equals很容易......我只是说:
if (name.equals(other.name) || id == other.id)
return true;
但这行不通,因为 hashMap 只使用 hashCode() 并不关心 equals()...
例子:
Map A = [ ("tom",1)=TOMAS, ("eli",2)=ELIAS ]
A.get(new Key("tom",0)) should return TOMAS
A.get(new Key("",1)) should return TOMAS
A.get(new Key("eli",2)) should return ELIAS
...