TreeSet
コレクションとhashCode
メソッドについて簡単な質問があります。オブジェクトをTreeSet
追加する前にTreeSet
、メソッドを使用してオブジェクトが存在するかどうかを確認しますcontains
。
以下の例のように、hashCode メソッドの実装を使用して、それぞれが異なる hashCode を生成する 2 つの異なるオブジェクトがあります。
public int hashCode()
{
int hash = 7;
hash = hash * 31 + anAttribute.hashCode();
hash = hash * 31 + anotherAttribute.hashCode();
hash = hash * 31 + yetAnotherAttribute.hashCode();
return hash;
}
特定の実行の hashCode は、76126352 および 76126353 です (オブジェクトは、1 つの属性で 1 桁だけ異なります)。
hashCode が異なっていても、contains メソッドはこれらのオブジェクトに対して true を返しています。理由はありますか?これは本当に紛らわしいので、助けていただければ幸いです。