Java-LinkedList
LinkedList实现了Deque<E>, List<E>, Queue<E>
接口, 根据需要, 可以把LinkedList当成不同的结构(列表, 队列, 栈, 双端队列)来使用. 对于不同的数据结构, 有对应的视图.
数据结构
LinkedList的数据结构是一个双向链表,同时维护了两个属性first
和last
分别是链表头和链表尾.
示意图如下:
对于不同的用途, 视图如下:
List
作为List的LinkedList,add
是在尾部添加元素:
Qeque
队列的特性是先进先出.
- 入队列是
add
,在链表尾 - 队列的出口在链表头部,所以
peek/poll/remove
都是对链表头部操作.
Stack
作为栈的LinkedList其实体现在Deque
接口中的push
和pop
方法
- push, 在链表头部插入
- pop, 在链表头部弹出
Deque
双端队列的头部就是链表的头部, 尾部就是链表的尾部.