我想知道爲什麼Hashtable避免使用負面哈希碼?哈希表散列避免負面哈希碼
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
凡(hash & 0x7FFFFFFF)
使符號位爲0到積極的,但我們爲什麼不能把簽名的32位整數爲unsigned?或者甚至使用模塊化技巧使其變得積極。例如,
public static long int_mod(int hashcode, int tab_length){
return (hashcode % tab_length + tab_length) % tab_length;
}
我覺得這個方法很簡單,也適用。可能這就是它被使用的原因。 '(hash&0x7FFFFFFF)'窄到正值,'%tab.length'窄到標籤大小。簡單幹淨,方便。 –
你指的是哪一種方法?原始實施? – peter
是的。已經實施。 –