因为在任何线程中没有内部和合理的解释.
请给我确切的理由.
请给我确切的理由.
>对于插入顺序,它足以维护单链接列表,但为什么不呢?
>在这种情况下双链表如何增加性能?
>所有的方法都是从hashmap xpt 4方法继承的,那么hashmap的迭代器不会维护顺序,而linkedhashmap维护顺序呢?
解决方法
你是对的,你只需要维护一个单链表来跟踪插入顺序.但是为了有效地维护单链表,您实际上需要一个双向链表.
考虑三个条目顺序
A ---> B ---> C
假设你删除B.显然A现在应该指向C.但除非你知道B之前的条目,否则你无法有效地说明哪个条目应该指向C.要解决这个问题,你需要输入两个方向.
---> ---> A B C <--- <---
这样,当您删除B时,您只需查看B(A和C)之前和之后的条目并进行更新,以便A和C指向对方.
LinkedHashMap维护插入顺序的原因,而HashMap没有,尽管除了4个方法之外,除了4个方法之外,它是非常聪明的.大多数实现特定的操作是HashMap.Entry的成员,而不是HashMap. LinkedHashMap有一个私有的静态类LinkedHashMap.Entry,它扩展了HashMap的静态类HashMap.Entry.当您调用put或remove时,例如,LinkedHashMap的代码可以与HashMap的代码相同,因为它是条目本身跟踪信息之前和之后.作为一个例子,下面是我上面解释的LinkedHashMap.Entry.remove()的完整代码
private void remove() { before.after = after; after.before = before; }