像栈一样,队列(queue)也是表。然而,使用队列时插入在一端进行而删除则在另一端进行。
队列模型
队列的基本操作是enqueue(入队),它是在表的末端(叫做队尾(rear))插入一个元素,和dequeue(出队),它是删除(并返回)在表的开头(叫做队头(front))的元素。下图显式一个队列的抽象模型。
JDK中的Queue源码
public interface Queue<E> extends Collection<E> {
/**
* data 入队,添加成功返回true,否则返回false,可扩容
* @param data
* @return
*/
boolean add(E e);
/**
* offer 方法可插入一个元素,这与add 方法不同,
* 该方法只能通过抛出未经检查的异常使添加元素失败。
* 而不是出现异常的情况,例如在容量固定(有界)的队列中
* NullPointerException:data==null时抛出
* @param data
* @return
*/
boolean offer(E e);
/**
* 返回队头元素,不执行删除操作,若队列为空,返回null
* @return
*/
E peek();
/**
* 返回队头元素,不执行删除操作,若队列为空,抛出异常:NoSuchElementException
* @return
*/
E element();
/**
* 出队,执行删除操作,返回队头元素,若队列为空,返回null
* @return
*/
E poll();
/**
* 出队,执行删除操作,若队列为空,抛出异常:NoSuchElementException
* @return
*/
E remove();
}