当前位置:编程学习 > JAVA >>

linkedlist中的addfirst()

public void addFirst(E e) { addBefore(e, header.next); } 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 private Entry<E> addBefore(E e, Entry<E> entry) { Entry<E> newEntry = new Entry<E>(e, entry, entry.previous); newEntry.previous.next = newEntry; newEntry.next.previous = newEntry; 中的 Entry<E> newEntry = new Entry<E>(e, entry, entry.previous); 是用第一个对象的next与previous构成,那是不是说新的对象就是第一个对象。 entry是怎么构建成的他与header.next也就是第一个对象的关系 还有 newEntry.previous.next = newEntry; newEntry.next.previous = newEntry; 这两句不同啊我迷茫了 求大神帮助。。。。。。。
追问:addBefore(e, header.next);传的是第一个对象的引用

Entry<E> newEntry = new Entry<E>(e, entry, entry.previous);

有两个参数是第一个对象的前后引用都是第一对象的。
我想问的是第一个对象与新插入的对象是什么关系呢。
是不是一回事。Entry<E> newEntry = new Entry<E>(e, entry, entry.previous);这句话确定新插入对象的previous

与next指向了么
newEntry.previous.next = newEntry;中

新插入对象的前一个对象(newEntry.previous)指的是什么
newEntry.next.previous = newEntry;中

新插入对象的后一个对象(newEntry.next)指的又是什么
求大神帮忙。。。。。。。。。。。。。。
答案:LinkedList里储存的其实是Entry而不仅仅是外面看上去的元素,每个Entry里有三个元素:值本身,排在这个Entry前的那个Entry,排在这个Entry后的那个Entry。表里的所有Entry就这样前后一个钩一个连在一起,这就是为什么这种List叫LinkedList的原因。

现在已经有一个LinkedList了,我要往里加一个新元素,而且指定要加在某Entry(我们叫它x,程序里它叫entry)之前,也就是要插在x和x前面那个Entry(我们叫它y,也就是x.previous)之间,那么新的Entry是怎么样的呢?它里面的三个元素是新元素值(e),它前面的那个Entry(自然是y),它后面那个Entry(自然是x),所以有这句
Entry<E> newEntry = new Entry<E>(e, entry, entry.previous);
有了这句还不够,还得把原来y和x之间的连接敲断,重新接到这个新加的Entry上。newEntry.previous(就是y)的后一个Entry就是新Entry:
newEntry.previous.next = newEntry;
而newEntry.next(就是x)的前一个Entry也是新Entry:
newEntry.next.previous = newEntry;

上一个:java中 不同的引用变量指向同一变量 首地址为什么不会相同
下一个:java 数据库编程需要设置新的classpath吗?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,