从下面的链接中,我知道Java使用(hash & 0x7FFFFFFF) % tab.length
来确定将{key,value}放入数组的哪个插槽。
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/util/Hashtable.java#Hashtable.put%28java.lang.Object%2Cjava.lang.Object%29
我的问题是,为什么Java首先进行hash&0x7FFFFFFF?有什么特殊目的吗?
最佳答案
因为您当然不希望将-1 % 10 == -1
索引到数组中。将符号位强制为0可避免此问题。