为什么 Java 的 LinkedList 的双链表实现不会链接后面元素
本文介绍了为什么 Java 的 LinkedList 的双链表实现不会链接后面元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
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++;
}
解决方案
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 元素了。
这篇关于为什么 Java 的 LinkedList 的双链表实现不会链接后面元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文