让我们假设我们有想要放入 Hashtable 的数据。哈希函数为每个数据对象计算一个哈希值,并将这个哈希值放入一个表中(每个值都应该有自己的桶)。通过哈希值,我们可以知道数据对象在表中的确切位置。
钥匙在这里起什么作用?Java 中的 HashMap 需要为我们放入 HashMap 中的每个值指定一个特定的键,并且使用该键我们可以获取该值。
我想知道我们要放入哈希表(在 java Hashmap 中)的值、哈希值和键之间有什么区别?这背后的数学原理是什么?
让我们假设我们有想要放入 Hashtable 的数据。哈希函数为每个数据对象计算一个哈希值,并将这个哈希值放入一个表中(每个值都应该有自己的桶)。通过哈希值,我们可以知道数据对象在表中的确切位置。
钥匙在这里起什么作用?Java 中的 HashMap 需要为我们放入 HashMap 中的每个值指定一个特定的键,并且使用该键我们可以获取该值。
我想知道我们要放入哈希表(在 java Hashmap 中)的值、哈希值和键之间有什么区别?这背后的数学原理是什么?
您总是需要原始密钥来应对哈希冲突。哈希码(或您所称的哈希值)的重点是能够非常快速地找到键的可能匹配项。哈希码完全基于键 - 值完全不相关。
所以从逻辑上讲,从哈希表中获取是:
null
以指示该结果。(将哈希表划分为桶的确切方式是一个实现细节。有时每个桶只包含一个条目,但可以链接到其他桶;在其他情况下,一个桶可以包含多个条目。请参阅wikipedia entry on hash表了解更多信息。)
这里的“条目”是一个{key, value, hash}
元组: