私はgetY()とgetX()という2つのメソッドを持つクラスを持っています。
YとXのドメインは[-1000.0、+ 1000.0]で、2倍です。私はハッシュコード()メソッドを書かれている
:EPSILONが許容最大誤差があるhashCodeメソッドの実装でオーバーフローを処理する方法
@Override
public int hashCode()
{
int hash=(int) (getX()/EPSILON);
hash+= (int) ((1000.0/EPSILON)*getY());
return hash;
}
。
しかし、問題は、値が高すぎると、X = 1000.0とY = 1000.0の場合にオーバーフローが発生することです。 オーバーフローを処理し、いずれの場合も2つの異なるオブジェクトに対して2つのハッシュコードを返すことができるhashCode()メソッドの記述方法?
あなたは最終的には 'Map'のサイズでmodに行き、' IndexOutOfBoundsException'を取得しないのですか?もしそうなら、オーバーフローを防ぐためにコードのどこかでmodを実行することができます。 – twain249
なぜ1000をイプシロンで分けているのですか(これは本当に小さな数字です)? – Luciano
同一の整数座標を持ち、同じ二重座標を持たないオブジェクトを区別するために.i:(0.0,0.0)は(0.0 + EPSILON、0.0)とは異なります。 –