为什么我们需要在哈希表键匹配中查找更多内容?

时间:2014-04-17 08:54:02

标签: java hash hashtable

来自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 并继续查找?

2 个答案:

答案 0 :(得分:3)

我们可以有多个(不同的)具有相同散列的对象。

例如:电话簿中的字母A下的姓名。

http://en.wikipedia.org/wiki/Hash_table

答案 1 :(得分:2)

可能有多个元素具有不同的键,但具有相同的哈希

这就是Hashmap的主意。找到密钥的哈希后,需要使用该哈希迭代所有元素,以找到具有正确密钥的元素。