1
我有一個類有兩個方法:getY()和getX()(它是一種映射)。 Y和X的域名是[-1000.0,+ 1000.0],他們是雙打的。
我寫一個hashCode()方法:如何處理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()方法,並且仍然能夠在每種情況下爲兩個不同的對象返回兩個哈希碼?
你最終會按照「Map」的大小去修改mod,這樣你就不會得到IndexOutOfBoundsException了嗎?如果是這樣的話,你可以在代碼的某個地方做一個mod來防止溢出。 – twain249
你爲什麼將1000除以epsilon(我認爲這個數字非常小)? – Luciano
要區分具有相同整數座標但不相同的雙座標的對象,則:(0.0,0.0)與(0.0 + EPSILON,0.0)不同。 –