2009-01-19 99 views

回答

3

正如他在有效的Java書建議的喬希布洛赫:

public int hashCode() { 
    int result = 17; 
    for (int i = 0; i < array.length; i++) { 
     result = 31*result + (int)array[i]; 
    } 
    return result; 
} 
+0

你有沒有想過爲什麼要使用31呢?這是一個素數,但還有一些我不記得的原因。 – martinus 2009-01-19 13:04:18

-2

如果你已經有Apache Commons Lang依賴你不妨使用HashCodeBuilder

new HashCodeBuilder().append(bytes).toHashCode(); 
+0

的Apache Commons是對Java SE - 不適用於Java ME/MIDP – gnat 2011-11-02 20:45:48