java - HashMap 在内部检查两个键是否相等,使用的是哪种算法?
问题描述
hashcode() 方法生成对象的哈希码,这有助于识别准确的存储桶/索引。假设在这个桶(索引)处已经存在几个键值对,那么应该将要插入的键与所有当前键进行比较。这里使用哪种算法来搜索密钥?
解决方案
它将对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;
}
推荐阅读
- r - 正则表达式删除 R 中的前导零,除非最后(或唯一)字符为零
- ionic-framework - 使用 Ionicv4 在 Android 中下载 PDF
- android - 使用 Flutter 打印语句时如何在 logcat 中格式化 JSON 字符串
- c# - 将 JSON 数据转换为数据表
- javascript - 如何在 React Native 中对一组组件进行排序?
- javascript - 在 React-Native 中使用 javascript Date() 在正确的时间安排通知
- javascript - 用 Javascript 控制 Lottie 动画的滑块
- php - 跨午夜每小时循环 PHP
- java - 将包含 ArrayList 的对象的 ArrayList 写入 CSV
- javascript - 动态路径导入 - Angular 组件