Rumah > Soal Jawab > teks badan
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++;
}
高洛峰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 元素了。
大家讲道理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;
}
}