(注意:本文源码基于JDK1.8)
Node类
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;
}
}
LinkedList对象持有一个双向链表,通过两个实例变量first或者last用于访问此双向链表,Node类作为双向链表的结点类,Node类定义在LinkedList类的内部,一个私有的静态内部类,同时也是一个范型类。
LinkedList对象持有由Node对象组成的双向链表,每个Node对象用于持有需要添加的元素对象
Node对象持有的三个实例变量
E item;
Node<E> next;
Node<E> prev;
item是Node对象持有的元素对象,它的类型取决于参数类型E,我们添加的元素,会赋值给Node对象持有的item保存上
next是Node对象持有的用于连接(指向)下一个Node对象的实例变量
prev是Node对象持有的用于连接(指向)上一个Node对象的实例变量
通过Node对象持有的prev、next即可创造一个通过引用实现的双向链表
Node的构造方法
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
创建Node对象时,传入的参数,用于完成结点对象的构建
传入的局部变量prev会成为当前Node对象持有的prev连接(指向)的上一个结点对象
传入的局部变量next会成为当前Node对象持有的next连接(指向)的下一个结点对象
而元素对象element则直接赋值给Node对象持有的item负责保存
first指向第一个Node对象
last指向最后一个Node对象