關於這個問題(Efficient hashCode() implementation)我還有一個問題。哈希碼實現
我有一個「價值」類,哪些實例是持久化在數據庫中。因此這個類的實例都有一個唯一的ID。
因此,我簡單地通過返回這個id來實現哈希碼方法(和相關的equals方法)。
當使用Eclipse哈希碼生成器,並告訴Eclipse中只使用ID屬性的一代,我有以下方法:
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
return result;
}
我想簡單地返回id爲更有效,因爲我知道這個ID是唯一的。我對嗎 ?
在此先感謝
如果結果是1,爲什麼你會因結果而m ly。你的功能實際上是「返回31 + ID;」。 – Tom 2009-07-02 14:26:28
順便說一句,你可能會擺脫31,因爲它不會改變id的分佈。簡而言之,你實現的hashcode沒有做任何特殊的事情,你應該只返回id。話雖如此,我不確定什麼是「更好」。 – Tom 2009-07-02 14:28:12