Rumah  >  Soal Jawab  >  teks badan

为什么 Java 的 LinkedList 的双链表实现不会链接后面元素

  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++;
    }
阿神阿神2744 hari yang lalu893

membalas semua(2)saya akan balas

  • 高洛峰

    高洛峰2017-04-18 10:50:47

    private static class Node<E> {
        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;
        }
    }
    final Node<E> newNode = new Node<>(null, e, f); // 构造函数的第3个参数不就是 next 元素了。

    balas
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:50:47

    Kenapa pautan terputus?
    f menunjuk kepada yang asal dahulu dan menetapkan Nod baharu baharu kepada yang pertama.
    Pada masa ini, adalah dinilai bahawa jika senarai pautan asal kosong, maka yang terakhir juga yang pertama.
    Jika ia tidak kosong, maka sebelum f<nod pertama asal>


    Saya rasa sebab anda fikir pautan itu rosak adalah kerana anda tidak melihat mata pertama seterusnya ke f. Er, seterusnya telah diluluskan dalam Node
    final Node<E> newNode = new Node<>(null, e, f);
    kelas statik peribadi Node<E>

        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;
        }
    }

    balas
    0
  • Batalbalas