关于哈希表的基本问题。考虑一个用哈希表替换整数数组的简单例子。什么是键/值对?如果我没错,那么一对在这里没有意义。
例如,我想将整数映射到大小为10的数组(从0到9的桶)。 考虑一个哈希函数,它只需要输入mod 10。 例如,元素23将转到3的桶中,因为23%10 = 3。
根据我的理解,23是关键,3是与之对应的哈希值。不是23'价值'?
答案 0 :(得分:1)
没有。 23
是关键。在您的情况3
中,密钥的哈希值决定了存储桶。该值是您放入存储桶中的值,与密钥23
相关联。例如,在许多语言中,您可以写:
my_hashtable[23] = "Valerie"
会创建一个键值对(23, "Valerie")
并将其填充到my_hashtable
的某个存储区中。
哈希表的目的是关联键和值,并允许以有效的方式进行查找。存储桶和散列是一个实现细节(最优的一个,所以每个人都在使用它们,但仍然是一个实现细节,因此与散列表的用户无关)。
正如我在评论中所指出的,如果你需要集合,大多数语言也支持它们。许多人会在后台使用哈希表来执行此操作,但这也是一个实现细节。