Data structures hashmap如何使用哈希键检索值?

Data structures hashmap如何使用哈希键检索值?,data-structures,hash,hashmap,hashtable,time-complexity,Data Structures,Hash,Hashmap,Hashtable,Time Complexity,当人们说Hashmap比列表更快时,我对Hashmap或Hashtable的概念更为困惑。我很清楚散列的概念,其中的值存储在给定键的散列代码中 但当我想检索数据时,它是如何工作的, 例如,我正在一个HashMap中存储n个字符串,其中包含n个不同的键。 如果我想检索与特定键关联的特定值,它将如何在时间的O(1)中返回它?因为与所有其他键相比,散列键将是对吗?让我们开始一个单词之旅,假设你有一堆奇怪的m&m和所有字母 现在,你的工作是向人们出售他们选择的字母颜色组合的m&m 你可以选择如何组织你的

当人们说Hashmap比列表更快时,我对HashmapHashtable的概念更为困惑。我很清楚散列的概念,其中的值存储在给定键的散列代码中

但当我想检索数据时,它是如何工作的, 例如,我正在一个HashMap中存储n个字符串,其中包含n个不同的键。
如果我想检索与特定键关联的特定值,它将如何在时间的O(1)中返回它?因为与所有其他键相比,散列键将是对吗?

让我们开始一个单词之旅,假设你有一堆奇怪的m&m和所有字母

现在,你的工作是向人们出售他们选择的字母颜色组合的m&m

你可以选择如何组织你的商店。(这种组织行为将隐喻为我们的哈希函数。)

你可以按颜色、字母或两者将M&M分类。下面的问题是,什么为您提供了特定请求的最快检索时间

答案相当直观,因为在每个存储桶中提供最少不同M&M的排序有助于实现最高效的查询

假设有人问你是否有绿色Q;如果你所有的M&M都在一个箱子、清单、桶或其他非结构化的容器中,那么与保持一个有组织的商店相比,O(1)中的答案将很难找到

这种类比依赖于单独链接的概念,其中每个哈希键对应于多个元素的容器

如果没有这一概念,散列的概念通常是在整个数组中统一使用密钥,从而使摊销性能保持不变。冲突可以通过各种不同的方法来解决,维基百科的文章将告诉您所有关于它的信息。


如果键值对集是固定的,并且提前知道(因此不允许插入和删除),则可以通过仔细选择哈希函数、桶表大小和内部数据结构来降低平均查找成本。特别是,可以设计出无冲突甚至完美的哈希函数

可能重复:以下是不同主题对您的问题的最佳答案