Data structures 为什么链表几乎总是与单独的链接一起使用?
似乎每次我在哈希表中看到单独的链接时,都会使用链表作为数据结构来存储有冲突的项。为什么会这样?例如,为什么不能使用向量/数组数据结构?如果有一个对象向量,那么复制对象可能会很昂贵,因此大多数通用哈希表都使用链表,不需要在删除或插入时进行复制。然而,在大多数代码中,从哈希表中删除实际上是一个非常罕见的操作,插入应该很少(您不希望增加长链),因此每当我自己实现哈希时,我总是使用向量来表示链,绝对没有问题Data structures 为什么链表几乎总是与单独的链接一起使用?,data-structures,vector,hashtable,linked-list,Data Structures,Vector,Hashtable,Linked List,似乎每次我在哈希表中看到单独的链接时,都会使用链表作为数据结构来存储有冲突的项。为什么会这样?例如,为什么不能使用向量/数组数据结构?如果有一个对象向量,那么复制对象可能会很昂贵,因此大多数通用哈希表都使用链表,不需要在删除或插入时进行复制。然而,在大多数代码中,从哈希表中删除实际上是一个非常罕见的操作,插入应该很少(您不希望增加长链),因此每当我自己实现哈希时,我总是使用向量来表示链,绝对没有问题 另一种解释是,链表是人们盲目获取的容器——有关这方面的更多意见,请参阅我的博客评论。您可以使用v
另一种解释是,链表是人们盲目获取的容器——有关这方面的更多意见,请参阅我的博客评论。您可以使用vector/ArrayList,但:
- 您不需要ArrayList提供的链接列表所没有的任何功能,例如在O(1)时间内索引到列表中
- ArrayList的容量往往大于其当前长度,这会浪费内存
- ArrayList需要偶尔增加其容量,这很慢