队列

像栈一样,队列(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();
}
posted @ 2019-01-20 15:44  Tu9oh0st  阅读(128)  评论(0编辑  收藏  举报