为什么链表几乎总是与单独的链接一起使用?

时间:2010-01-16 13:44:03

标签: data-structures vector hashtable linked-list

似乎每当我在哈希表中看到单独的链接时,链表就会被用作存储冲突项的数据结构。为什么是这样?例如,为什么不能使用矢量/数组数据结构?

2 个答案:

答案 0 :(得分:5)

你可以使用vector / ArrayList但是:

  • 您不需要ArrayList提供的任何链接列表所没有的功能,例如在O(1)时间内索引到列表中。
  • ArrayLists的容量往往大于其当前长度,这会浪费内存。
  • ArrayLists需要偶尔增加容量,这很慢。

答案 1 :(得分:2)

如果您有一个对象向量,那么复制对象可能很昂贵,因此大多数通用哈希表都使用链接列表,这些列表在删除或插入时不需要复制。但是,在大多数代码中从哈希表中删除实际上是一种罕见的操作,并且插入应该很少(你不想长链),所以每当我自己实现哈希时,我总是使用链的向量,绝对没有问题。

另一种解释是,链接列表是人们盲目接触的容器 - 请参阅我的博客评论here以获得更多意见。