我看到了LinkedHashMap
的源代码,当创建LinkedHashMap
的实例时,它首先创建标头,当新的条目添加到LinkedHashMap
时,它会添加在标题之前的特定条目,我无法理解这些代码行
private void addBefore(Entry<K,V> existingEntry) {
after = existingEntry;
before = existingEntry.before;
before.after = this;
after.before = this;
}
我所理解的是之后指针指向标题总是如我所见 并且之前指针指向 existingEntry 之前的条目 任何人都可以向我解释这段代码以及如何在和之前将指针维持在之前。
答案 0 :(得分:1)
将新条目插入列表时,将调用您发布的代码。我想最好用一个例子来解释。
我们假设您有两个条目A
和B
,A
位于B
之前。在这种情况下,这些条目具有以下值:
A.before = B
B.after = A
现在您要在两者之间插入新的条目X
。在这种情况下,您发布的方法是X
。执行后,您将拥有以下值:
A.before = X
X.after = A
X.before = B
B.after = X
方法addBefore()
不仅需要设置新条目的after
和before
成员,还需要更新链接成员中的引用。