Queue(队列)接口继承自Collection,用来表示内部元素具有先后顺序的集合。除了基本的集合操作外,队列还提供了其他插入、删除和检查操作。Queue接口定义如下:
public interface Queue<E> extends Collection<E> {
E element();
boolean offer(E e);
E peek();
E poll();
E remove();
}
每一个队列相关方法都提供了两种形式:一种如果操作失败抛出异常,另一种如果操作失败返回一个特殊值(null或false)。 Queue接口结构如下图所示:

队列接口结构
队列通常是,但不是必须,以FIFO(先进先出)的方式排列元素。优先级队列除外,它是根据元素的值来排序(此句话待验证)。无论使用哪种排序方式,队列的头元素始终是那个通过
remove或者poll移除的元素。有些队列实现是有边界限制的,有些没有。
队列实现类通常不允许插入
null元素,而LinkedList是个例外,由于某些历史原因,它允许插入null元素。但你应该杜绝这么做,因为null被用作poll和peek的特殊返回值。队列实现类通常不会定义基于元素版本的
equals和hashCode方法,而是继承来自Object的实现。Queue接口没有定义通常用于并发编程的阻塞队列方法,而这些方法(通常是等待元素出现或者有空间可用等),定义于Queue的子接口java.util.concurrent.BlockingQueue。