首页 > 解决方案 > HashMap 在内部检查两个键是否相等,使用的是哪种算法?

问题描述

hashcode() 方法生成对象的哈希码,这有助于识别准确的存储桶/索引。假设在这个桶(索引)处已经存在几个键值对,那么应该将要插入的键与所有当前键进行比较。这里使用哪种算法来搜索密钥?

标签: javahashmap

解决方案


它将对HashMap的条目集执行线性搜索。它将通过查看您的key(by hash) 来获取条目集,然后逐个迭代条目集(您的多个键值对/对)并为您检查正确的键。

这是实现

public V get(Object key) {

    if (key == null)
        return getForNullKey();
    int hash = hash(key.hashCode());

    for (Entry<K,V> e = table[indexFor(hash, table.length)];e != null;e = e.next) {
         Object k;
         if (e.hash == hash && ((k = e.key) == key || key.equals(k)))
             return e.value;
         }
     }
     return null;
 }

推荐阅读