我有一个类有两种方法:getY() 和 getX()(它是一种地图)。
Y 和 X 的域是 [-1000.0, + 1000.0],它们是双精度数。
我写了一个 hashCode() 方法:
@Override
public int hashCode()
{
int hash=(int) (getX()/EPSILON);
hash+= (int) ( (1000.0/EPSILON)*getY() );
return hash;
}
其中 EPSILON 是允许的最大误差。
但问题是值太高,如果 X=1000.0 和 Y=1000.0 出现溢出。如何编写一个 hashCode() 方法来处理溢出并且在每种情况下仍然能够为两个不同的对象返回两个哈希码?