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