java中的LinkedHashMap
我看到了java中的LinkedHashMap,java,linkedhashmap,Java,Linkedhashmap,我看到了LinkedHashMap的源代码,当创建LinkedHashMap实例时,它首先创建头,当一个新条目添加到LinkedHashMap中,它在头之前添加特定条目时,我无法理解这些代码行 private void addBefore(Entry<K,V> existingEntry) { after = existingEntry; before = existingEntry.before; before.after = t
LinkedHashMap
的源代码,当创建LinkedHashMap
实例时,它首先创建头,当一个新条目添加到LinkedHashMap
中,它在头之前添加特定条目时,我无法理解这些代码行
private void addBefore(Entry<K,V> existingEntry) {
after = existingEntry;
before = existingEntry.before;
before.after = this;
after.before = this;
}
private void addBefore(条目existingEntry){
之后=现有条目;
before=existingEntry.before;
在此之前。之后=此;
之后。之前=这个;
}
我所理解的是,正如我所看到的,之后的指针总是指向标题
而before指针指向现有条目之前的条目
有人能给我解释一下这段代码,以及它是如何在之后和之前维护指针的吗当您在列表中插入新条目时,您发布的代码会被调用。我想最好用一个例子来解释 假设您有两个条目
A
和B
,其中A
在B
之前。在这种情况下,这些条目具有以下值:
A.before = B
B.after = A
A.before = X
X.after = A
X.before = B
B.after = X
现在,您需要在两个条目之间插入一个新条目X
。在这种情况下,将为X
调用您发布的方法。执行后,您有以下值:
A.before = B
B.after = A
A.before = X
X.after = A
X.before = B
B.after = X
方法addBefore()
不仅需要在新条目的之后和之前设置成员,还需要更新链接成员中的引用