java - 在 HashMap 和 HashTable 中计算 hashCode 的工作方式是否不同?

标签 java hash hashcode

我看了几个论坛,但我仍然不明白 hashCode() 是如何计算的以及何时计算的?!我在 HashMap 中读到 hashCode() 是这样调用的:hash(key.hashCode());HashTable,它是用键和对计算的:h += e.key.hashCode() ^ e.value.hashCode();。它们在 HashMapHashTable 中的计算方式不同吗?

hashCode() 什么时候被调用?我假设当您尝试执行 put(..)get(..)delete(..) 时会发生这种情况?

最佳答案

keyhashCode() 在您将项目放入 map 时被调用:

public V put(K key, V value) {
...
int hash = hash(key.hashCode());
...
}

以便可以将具有指定键、值和哈希码的新条目添加到指定的桶中。

当您尝试根据给定的 keymap 中检索 value 以查找具有必需的 条目。同样,如果您调用 containsKey 来检查给定的键是否存在于 map 中,它会使用 hashCode 来查找 bucket 包含 Entry

关于java - 在 HashMap 和 HashTable 中计算 hashCode 的工作方式是否不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19658003/

相关文章:

c++ - 重新哈希表

ssl - 当两个网站的 SSL 证书返回相同的指纹时,它们如何关联起来?

java - Android - 防止 WebView 在旋转时重新加载

python - 具有最小冲突的短 Python 字母数字哈希

java - 在 JApplet 中绘制随机点

java - 关于Oracle的java在线教程中使用HashMap存储anagram的例子

尽管 hashcode 不同,但 Java 对象是相等的

java - 基元上的 System.identityHashCode() 行为

java - 在 Hibernate 中使用 Transformers.aliasToBean 填充子 bean

java - 在 httpurlconnection 中编码 json 对象参数