数据结构:Queue

虎头蛇尾

Posted by MatthewHan on 2020-04-28

介绍

先进先出,一种特殊的线性表,只允许表在一端进行获取操作,在另一端进行插入操作。当不存在元素时,则为空队列。自从 BlockingQueue(阻塞队列)问世以来,队列的地位得到极大地提升,在各种高并发编程的场景,经常被作为 Buffer(数据缓冲区)使用。

通常我们把LinkedList当成Queue来用,Queue类自身的一些方法:

方法 方法描述
boolean add(E e) 入队一个元素至队尾
boolean offer(E e); 入队一个元素至队尾
E remove() 从头部出队一个元素
E poll() 从头部出队一个元素
E element() 查询头元素
E peek() 查询头元素

以下摘自菜鸟教程

  • offer,add 区别:

    • 一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。
    • 这时新的offer()方法就可以起作用了。它不是对调用add()方法抛出一个unchecked异常,而只是得到由offer()返回的false。
  • poll,remove 区别:

    • remove()poll()方法都是从队列中删除第一个元素。remove()的行为与Collection接口的版本相似, 但是新的poll()方法在用空集合调用时不是抛出异常,只是返回null。因此新的方法更适合容易出现异常条件的情况。
  • peek,element区别:

    • element()peek()用于在队列的头部查询元素。与 remove() 方法类似,在队列为空时,element()抛出一个异常,而peek()返回null。