正如我提到LinkedHashMap的文档,它说,内部维护双链表(DLL)
我试图理解为什么选择DLL而不是S(ingle)LL 我使用DLL获得的最大优势是向后遍历,但我没有看到LinkedHashMap()利用这一优势的任何用例,因为在Iterable接口中没有像next()那样的previous()操作。
任何人都可以解释为什么是DLL,而不是SLL?
答案 0 :(得分:7)
这是因为使用额外的哈希映射,您可以在O(1)中实现删除。如果您使用的是单链表,则删除将采用O(n)。
考虑用于存储键值对的哈希映射,以及具有指向链表中的节点的键的另一个内部哈希映射。删除时,如果它是一个双向链表,我可以轻松找到前一个元素并使其指向以下元素。单链表无法实现这一点。