Bob*_*Gee 11
这几乎是重复的:为什么我们在哈希表而不是索引中使用哈希码?
简而言之,您可以非常快速地检查密钥是否已经存储,并且同样快速地存储新映射.否则,您必须保留一个排序的键列表,这对于存储和检索映射要慢得多.
我不明白的原因是为什么不将密钥(字符串,数字等)存储的值作为密钥存储
你是如何实现的?
计算机只知道数字.哈希表是一个表,即一个数组,当我们向下直到它时,一个数组只能通过一个整数非负索引来寻址.其他一切都是骗局.允许您使用字符串键的动态语言 - 它们使用技巧.
一个这样的技巧,通常是最优雅的,只是计算密钥的数字,可重现的"哈希"数,并将其用作索引.
(还有其他一些考虑因素,例如压缩关键范围,但这是最重要的问题.)
什么是哈希表?
它也被称为哈希映射是用于实现关联数组的数据结构.它是一种可以将键映射到值的结构.
这个怎么运作?
哈希表使用哈希函数来计算桶或槽阵列的索引,从中可以找到正确的值.
请参见下图清楚解释.

好处:
在尺寸合适的哈希表中,每次查找的平均成本与表中存储的元素数量无关.
许多哈希表设计还允许任意插入和删除键值对.
在许多情况下,哈希表比搜索树或任何其他表查找结构更有效.
缺点:
当条目数非常小时,哈希表无效.(但是,在某些情况下,可以通过将哈希值与密钥一起保存来减轻计算哈希函数的高成本.)
用途:
它们广泛用于多种计算机软件,特别是关联数组,数据库索引,缓存和集合.