JDK7中 LinkedList
private 方法 private void linkFirst(E e)
在新添加元素时链表不会断裂?
代码来源于 JDK7
private void linkFirst(E e) {
final Node<E> f = first;
final Node<E> newNode = new Node<>(null, e, f);
first = newNode;
if (f == null)
last = newNode;
else
f.prev = newNode;
// 此处没有执行 newNode.next = f; newNode.next 不会链接后面的元素
size++;
modCount++;
}
リーリー リーリー
リンクが切れているのはなぜですか?
f は元の first を指し、新しい newNode を first に設定します。
このとき、元のリンクリストが空であれば最後も最初であると判断します。
それが空でない場合、f<original first node> の prev は first を指します。
リンクが壊れていると思う理由は、first の next が f を指しているのを見ていなかったからだと思います。えー、次は Node に渡されました
final Node<E> newNode = new Node<>(null, e, f);
private static class Node<E> リーリー