哪个哈希码哈希映射实现用于值检索
Posted
技术标签:
【中文标题】哪个哈希码哈希映射实现用于值检索【英文标题】:Which hash code hash map implementation uses for value retrieval 【发布时间】:2017-10-04 23:16:40 【问题描述】:我知道 hashmap 实际上使用 hashcode 来存储和检索 hashtable 中的对象,但我怀疑它使用的是哪个 hashcode。 map 实际上包含 key 的 hashcode 和 value 的 hashcode。让我们这样考虑
Map<String,String> student=new HashMap();
student.put("name", "foo");
System.out.println("name".hashCode());
System.out.println("foo".hashCode());
在这里,名称(键)的哈希码是 3373707 foo(value) 的哈希码是 101574
我的疑惑是它应该使用哪一个来存储和检索对象
【问题讨论】:
【参考方案1】:从HashMap
中的以下代码可以看出,它使用了自己的哈希函数:
public V put(K key, V value)
return putVal(hash(key), key, value, false, true);
static final int hash(Object key)
int h;
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
它使用对象的hashCode
,但xor
使用它并算术将其向右移动16次。
为了具体回答您的问题,它使用键的hashCode
而不是的值。
【讨论】:
什么意思? 哦,我明白了,如果您还有其他问题,请随时问我!谢谢你:) 我一定会的以上是关于哪个哈希码哈希映射实现用于值检索的主要内容,如果未能解决你的问题,请参考以下文章