it-swarm.cn

哈希和字典有什么区别?

HashDictionary有什么区别?

来自脚本背景,我觉得它们很相似,但是我想找出确切的区别。谷歌搜索对我没有太大帮助。

48
Sairam

Hash是一个命名很差的数据结构,程序员在其中将接口与实现混淆了(and懒得写全名,即HashTable而不是缩写Hash)。

Dictionary是界面的 “正确”名称 (= [〜# 〜] adt [〜#〜] ),即将(通常是唯一的)键映射到(不一定是唯一的)值的关联容器。

哈希表是one这样的字典的可能实现,该字典提供了很好的访问特性(就运行时而言),因此通常是默认实现。

这样的实现具有两个重要的属性:

  1. 键必须为hashable等于等式
  2. 条目在字典中的显示顺序没有特别的顺序。

(对于可散列的键,意味着我们可以从键中计算出一个数值,该数值随后将用作数组中的索引。)

存在字典数据结构的替代实现,这些实现在键上加上ordering –这通常称为sorted字典(通常以搜索树的形式实现,尽管存在其他有效的实现方式)。


总结一下:字典是将键映射到值的ADT。此ADT有几种可能的实现,其中hash table是其中之一。 Hash是用词不当,但在上下文中等效于根据哈希表实现的字典。

94
Konrad Rudolph

“字典”是概念的名称。哈希表是一种可能的实现。

8
dan_waterworth

字典是为用于快速查找/插入的任何数据结构实现提供的统称。这可以使用各种数据结构(例如哈希表,跳过列表,rb树等)来实现/实现。哈希表是一种特定的数据结构,可用于许多目的,包括实现字典。

7
aufather

字典使用键直接在关联数组内部引用值。

(KEY => VALUE)

hash通常被描述为hash table,它使用hash function计算内存(或更容易地是数组)中的位置,其中价值将是。 哈希将把KEY作为输入并给出一个值作为输出。然后将该值插入内存或数组索引。

KEY => HASH FUNCTION => VALUE

我猜一个是直接的,而另一个不是。哈希函数可能也不完美,有时可能会提供引用错误值的索引。但这可以纠正。

最好的地方:维基百科(关联数组哈希表

5
Ross