哈希:表格,列表和地图,哦,我的?

时间:2011-09-19 17:00:49

标签: data-structures hash computer-science

我一直在尝试为各种类型的哈希数据结构找到一些具体的(非专业;非超学术)定义,特别是哈希表,哈希列表和哈希映射。在线搜索为所有这些提供了许多有用的链接,但从未明确说明何时适合使用其他链接。

(1)从实际的角度来看,这三者之间有什么区别?

(2)他们的运营运行时间有何不同?是否应该使用或避免使用其他类型的哈希值?

(3)每个如何与地图ADT有关?它们只是不同的实现,还是完全不同的野兽?

感谢您的任何见解!

1 个答案:

答案 0 :(得分:2)

有一个抽象的数据结构,包含键和值之间的映射。它有几个不同的名称,包括 Map Dictionary Table Association Table等等。

此数据结构应支持的最基本操作是在给定其关联键的情况下添加,删除和检索值。围绕这个基本概念有各种变化和补充 - 例如,一些结构支持迭代所有键值对,一些结构支持每个键的多个值,等等。各种实现之间的时间和空间复杂性也存在差异。 / p>

在可用于此数据结构的多个实现中,一些最常用的实现使用hash functions来实现快速访问。这些实现有时通过名称Hash TableHash Map调用,您可以read more about them in Wikipedia。哈希表实现之间的性能也有所不同,其中一些实现了分摊的O(1)插入和访问复杂性(对于大量使用的空间的价格)。

另一方面,哈希列表是另一回事,更多的是关于数据结构的使用,而不是实际结构。哈希列表通常只是哈希值的常规列表,没有什么特别之处。它在验证大量数据的完整性时使用 - 在这种情况下,它允许独立验证各种数据块,允许修复或检索坏块。这与使用单个哈希值来散列整个数据相反,在这种情况下,失败意味着必须修复或再次检索所有数据。