私は非常に大きなSet
不変オブジェクトを持っているので、構築時にそれらに一意のハッシュコードを割り当てることを考えています。
private static int counter = Integer.MIN_VALUE;
private final double foo;
private final double bar;
private final int hashCode;
public MyImmutableObject(double foo, double bar)
{
counter++;
this.foo = foo;
this.bar = bar;
this.hashCode = counter;
}
@Override
public int hashCode()
{
return this.hashCode;
}
/**
* Unneeded override of equals since its the same as in
* Object, but shown for demonstration purposes.
*/
@Override
public boolean equals(final Object obj)
{
return this == obj;
}
このようにして、2つの32の一意のキーがあるため、キーの分散度を可能な限り高くすることができます。もちろん、これは、オブジェクトがそれ自体と等しいだけなので、このタイプの2つのオブジェクトが等しくなることは決してないことも意味します。
編集:オブジェクトは、sのキーとしても使用されますMap
。
これは可能ですか?見逃した隠れた罠はありますか?