gpt4 book ai didi

Java 字符串 : Is hashcode actually the hashvalue?

转载 作者:搜寻专家 更新时间:2023-11-01 03:27:44 25 4
gpt4 key购买 nike

hastable 在对象上使用一些哈希函数来存储。

这个哈希函数本质上是计算对象在表中的位置。

如果我们使用 HashTableHashMap 并且大小不能容纳更多元素,那么这些集合将调整大小以容纳更多元素。
这意味着必须重新散列每个存储的元素以计算新的更大表中的新位置。

我的问题如下(以上是正确的):
我读到 String 通过使用它存储的字符计算其 hashcode 并且 hashvalue 存储在内部(缓存)以获得最佳性能,因为它不必重新计算。

这是我没有得到的部分。如果 hashcode 是基于 String 存储的字符,那么 hashtable< 中的位置如何 计算?

Stringhashcode 是否有一些额外的逻辑?所以 Stringhashcode 实际上不是 hashvalue

最佳答案

哈希码没有改变。只有内表中的位置是。打开 HashMap 并查看:

static int indexFor(int h, int length) {
return h & (length-1);
}

表(实际上是数组)中的索引是根据散列和数组的大小确定的。

因此,当“重新散列”发生时,它使用相同的散列码,但长度不同,这意味着该元素被放入不同的桶中。

关于Java 字符串 : Is hashcode actually the hashvalue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9025681/

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