概述
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
出队顺序:
先进先出(FIFO—first in first out)
队列又可分为:
顺序队列
循环队列
Queue实现
java.util.Queue
分析 如下:
(1)java.util.Queue接口继承自java.util.Collection接口
(2)java.util.Queue接口约定了队列的基本操作:插入、删除、检查。每个操作都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(null或false)
(3)队列通常以FIFO【first in first out】的方式排序各个元素
操作名称 | 抛出异常 | 返回特殊值 |
---|---|---|
插入 | add(e) | offer(e) |
删除 | remove() | poll() |
检查 | element() | peak() |
源码如下:
public interface Queue<E> extends Collection<E> {
//将指定的元素插入此队列,成功则返回true,失败则抛出异常
boolean add(E e);
//将指定的元素插入此队列
boolean offer(E e);
//获取并移除此队列的头。此方法与poll唯一不同在于:此队列为空时将抛出一个异常
E remove();
//获取并移除此队列的头,如果此队列为空,则返回null
E poll();
//获取队列的头,但是不移除此队列的头。此方法与peek唯一的不同在于:此队列为空时将抛出一个异常
E element();
//获取队列的头,但不移除此队列的头;如果此队列为空,则返回 null。
E peek();
}