Java集合框架(五)Queue接口
2016-05-05 本文已影响140人
清风流苏
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
。