2014-03-26 108 views
0

我看到LinkedHashMap的源代码,当创建LinkedHashMap实例时,它首先创建标题,并且当一个新条目添加到LinkedHashMap中时,它在标题前添加了特定条目,我不是能够理解这些代码行java中的LinkedHashMap

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

我所了解的是,指针所指向的头总是我所看到的 和以前指针所指向的条目前existingEntry 有人可以解释我这个代码,以及它如何在和之前在之前保持指针

回答

1

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

我们假设您有两个条目AB,其中AB之前。在这种情况下,这些条目具有以下值:

A.before = B 
B.after = A 

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

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

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