Map のキーとして MultiKey オブジェクトがあります。
キーは、名前 (文字列) と 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
...