我想知道为什么Hashtable避免使用负哈希码?
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
哪里(hash & 0x7FFFFFFF)
使有符号位从 0 变为正数,但为什么我们不能将有符号的 32 位整数视为无符号?甚至使用模块化技巧使其变得积极。例如,
public static long int_mod(int hashcode, int tab_length){
return (hashcode % tab_length + tab_length) % tab_length;
}