我有一個使用hashCode()實現的向量類。它不是由我寫的,而是使用2個素數來乘以2個矢量分量,然後對它們進行異或運算。這是它:將Java哈希碼組合成「主」哈希碼
/*class Vector2f*/
...
public int hashCode()
{
return 997 * ((int)x)^991 * ((int)y); //large primes!
}
...因爲這是來自已建立的Java庫,我知道它的工作原理很好。
然後,我有一個邊界類,它包含2個向量,「開始」和「結束」(表示一行的終點)。這兩個向量的值是描述邊界的特徵。
/*class Boundary*/
...
public int hashCode()
{
return 1013 * (start.hashCode())^1009 * (end.hashCode());
}
在這裏,我試圖爲載體的獨特的2元組創建一個良好的hashCode()(啓動&端)構成該邊界。我的問題:這個hashCode()實現是否正常工作? (注意,我在後面的hashCode()實現中使用了2個不同的素數;我不知道這是否是必要的,但是當試圖避免常見因素時比對不起更好,我猜 - 自從我認爲這就是爲什麼素數在哈希函數中很受歡迎的原因。)
謝謝薩米爾,我不知道Eclipse有這個。 – 2010-05-31 12:24:49