一.Queue类图
整个Queue结构如上图,单双端+Blocking与否组成了四个接口。
- Queue:队列。
- Deque:double ended queue双端队列。
- BlockingQueue:阻塞队列。
- BlockingDeque:阻塞双端队列。
二.Stack类
- 栈的实现。
- public class Stack<E> extends Vector<E>,直接用
Vector实现其
LIFO的思想。
三.Queue & Stack
- Queue队列,满足FIFO;Stack栈,满足LIFO。
- 方法对比
- Stack就三个方法:
返回e 插入 push(e)
移除 pop()
查看 peek()
- Queue就稍微复杂些:每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(操作失败时返回null 或 false ,具体取决于操作)。
抛出异常 返回特殊值 插入 add(e)
offer(e)
移除 remove()
poll()
查看 element()
peek()
- Stack就三个方法:
四.使用
-
Queue 实现通常不允许插入 null 元素,尽管某些实现(如
LinkedList
)并不禁止插入 null 。即使在允许 null 的实现中,也不应该将 null 插入到 Queue 中,因为 null 也用作 poll 方法的一个特殊返回值,表明队列不包含元素。 - Deque也可用作 LIFO(后进先出)堆栈。应优先使用Deque而不是遗留
Stack
类。 - BlockingQueue在Queue的基础上增加了两个阻塞方法:put和take;但它任然有Queue的其他方法。