gpt4 book ai didi

java - 哪个哈希码 HashMap 实现用于值检索

转载 作者:搜寻专家 更新时间:2023-11-01 02:37:34 24 4
gpt4 key购买 nike

我知道 hashmap 实际上使用 hashcode 来存储和检索 hashtable 中的对象,但我的疑问是它使用的是哪个 hashcode。 map 实际上包含键的哈希码和值的哈希码。让我们这样考虑

Map<String,String> student=new HashMap();
student.put("name", "foo");
System.out.println("name".hashCode());
System.out.println("foo".hashCode());

这里 name(key) 的 hashcode 是 3373707foo(value) 的哈希码是 101574

我的疑问是它应该使用哪个来存储和检索对象

最佳答案

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,但对它进行异或并算术右移 16 次。

为了具体回答您的问题,它使用键的 hashCode 而不是值。

关于java - 哪个哈希码 HashMap 实现用于值检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43822469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com