LinkedList-5
LinkedList 适用于集合元素先入先出和先入后出的场景,在队列源码中被频繁使用. LinkedList 底层数据结构是一个双向链表,整体结构如下图所示: 我们有几个概念如下: 链表每个节点我们叫做 Node,Node 有 prev 属性,代表前一个节点的位置,next 属性,代表后一个节点的位置; first 是双向链表的头节点,它的前一个节点是 null。 last 是双向链表的尾节点,它的后一个节点是 null。 当链表中没有数据时,first 和 last 是同一个节点,前后指向都是 null。 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; } } 1.追加(新增) 追加节点时,我们可以选择追加到链表头部,还是追加到链表尾部,add 方法默认是从尾部开始追加,addFirst 方法是从头部开始追加,我们分别来看下两种不同的追加方式: