比较哈希表实现

时间:2011-03-13 18:02:22

标签: data-structures hashtable implementation

  

可能重复:
  Chained Hash Tables vs. Open-Addressed Hash Tables

一般来说,我看过两种哈希表的实现。第一个实现为两个数组,一个包含键,另一个包含值。第二个有一个数组,然后是一个包含键值对象的链表。

一种实施方式的优缺点是什么?对于碰撞处理和put / get操作,两者看起来都同样好。

2 个答案:

答案 0 :(得分:3)

Wikipedia上有很好的写作。您要查找的关键字是开放寻址(有时称为封闭散列)与封闭寻址(有时称为开放散列)。

答案 1 :(得分:2)

正如johna所说,我们称第一个例子是开放式寻址,而后者是链接

开放式寻址的主要缺点是,通过使用哈希表数组存储值,如果发生多次冲突,您将溢出存储桶阵列,然后进行昂贵的调整大小。此外,这种数据结构有点不清楚。

使用链接或指向链接列表的指针,尽管链表可能会变得很深,但您永远不会溢出数组。这个;然而,这是一个一致且可预测的数据流,也是一个更容易理解的概念。