java中的LinkedHashMap

时间:2014-03-26 10:52:23

标签: java linkedhashmap

我看到了LinkedHashMap的源代码,当创建LinkedHashMap的实例时,它首先创建标头,当新的条目添加到LinkedHashMap时,它会添加在标题之前的特定条目,我无法理解这些代码行

 private void addBefore(Entry<K,V> existingEntry) {
        after  = existingEntry;
        before = existingEntry.before;
        before.after = this;
        after.before = this;
    }

我所理解的是之后指针指向标题总是如我所见 并且之前指针指向 existingEntry 之前的条目 任何人都可以向我解释这段代码以及如何在和之前将指针维持在之前。

1 个答案:

答案 0 :(得分:1)

将新条目插入列表时,将调用您发布的代码。我想最好用一个例子来解释。

我们假设您有两个条目ABA位于B之前。在这种情况下,这些条目具有以下值:

A.before = B
B.after = A

现在您要在两者之间插入新的条目X。在这种情况下,您发布的方法是X。执行后,您将拥有以下值:

A.before = X
X.after = A
X.before = B
B.after = X

方法addBefore()不仅需要设置新条目的afterbefore成员,还需要更新链接成员中的引用。