介绍
先进先出,一种特殊的线性表,只允许表在一端进行获取操作,在另一端进行插入操作。当不存在元素时,则为空队列。自从 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。