Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的LinkedHashMap_Java_Linkedhashmap - Fatal编程技术网

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()
不仅需要在新条目的
之后和
之前设置
成员,还需要更新链接成员中的引用