我想知道为什么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
是的。已经实施。 –