为什么 Java 的 LinkedList 的双链表实现不会链接后面元素
阿神
阿神 2017-04-18 10:48:47
0
2
960
  1. 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++;
    }
阿神
阿神

闭关修行中......

全部回覆(2)
小葫芦

雷雷 雷雷

大家讲道理

為什麼會斷鍊呢?
f指向原來的first,將新的newNode設定為first。
這時候就判斷,如果原來的鍊錶就是空的,那麼last也就是first咯。
如果不為空,那麼就是將f的prev就指向first。


我猜你之所以覺得會斷鍊是因為,你沒看到first的next指向f。額next這個在Node已經傳進去了
final Node newNode = new Node(null, e, f);
private static class Node {

    E item;
    Node<E> next;
    Node<E> prev;

    Node(Node<E> prev, E element, Node<E> next) {
        this.item = element;
        this.next = next;
        this.prev = prev;
    }
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板