我知道我的问题与之前发布的问题非常类似。我已经为此发了多篇文章,但答案仍然不太清楚。这就是我再次发帖的原因。
为什么Linked HashMap在Single LinkedList上使用双重LinkedList,而order也可以通过Single LinkedList维护。
在上一篇文章的答案中,有人提到LinkedHashMap为删除提供了O(1)复杂性,因为它有前一个和下一个元素指针,但我认为HashMap也提供O(1)删除。
谢谢,
答案 0 :(得分:5)
我认为HashMap还提供O(1)删除
这是真的,但HashMap
不必维护密钥的顺序。因此,在删除条目时,只需要修改从中删除条目的存储桶的小链表(在Java 8之前的实现中.Java 8实现使用树),这应该是预期的{{1}时间。
O(1)
必须维护将键添加到Map的顺序,它使用包含Map的所有条目的附加链接列表。因此,当您删除条目时,如果您无法访问此大链接列表中的上一个条目,则必须从其开头迭代链接列表,直到找到它为止,这将需要线性时间。
您可以在此处删除条目后查看LinkedHashMap
的作用:
LinkedHashMap
这不可能在一个单独链接列表的固定时间内完成。