来自java.util.Hashtable:
public synchronized boolean containsKey(Object key) {
Entry tab[] = table;
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
for (Entry<K,V> e = tab[index] ; e != null ; e = e.next) {
if ((e.hash == hash) && e.key.equals(key)) {
return true;
}
}
return false;
}
我们已经从密钥的哈希码计算了索引,那么为什么我们需要 e.next 并继续查找?
答案 0 :(得分:3)
答案 1 :(得分:2)
可能有多个元素具有不同的键,但具有相同的哈希。
这就是Hashmap的主意。找到密钥的哈希后,需要使用该哈希迭代所有元素,以找到具有正确密钥的元素。