【Java】Java队列Queue使用详解

2022-10-28 10:15:32

Deque是一个双端队列接口(double ended queue),继承自Queue接口,Deque的实现类是LinkedList、ArrayDeque、LinkedBlockingDeque,其中LinkedList是最常用的。

Deque有三种用途:

  • 普通队列(一端进另一端出):
    • Queue queue = new LinkedList()或Deque deque = new LinkedList()
  • 双端队列(两端都可进出)
    • Deque deque = new LinkedList()
  • 堆栈
    • Deque deque = new ArrayDeque()

注意:Java堆栈Stack类已经过时,Java官方推荐使用Deque替代Stack使用。Deque堆栈操作方法:push()、pop()、peek()。

Queue的12个方法分类:

压入元素(添加):

addFirst:在队列的前面立即加入该元素
offerFirst:在该元素的前面插入指定的元素,除非它违反容量限制。返回 boolean
addLast:在队列的后面立即加入该元素
offerLast:在该元素的后面插入指定的元素,除非它违反容量限制。返回 boolean

add()、offer()
相同:未超出容量,从队尾压入元素,返回压入的那个元素。
区别:在超出容量时,add()方法会对抛出异常,offer()返回false

弹出元素(删除):remove()、poll()

removeFirst:移除队列的第一个元素
pollFirst:移除队列的第一个元素,除非它为空。返回 boolean
removeLast:移除队列的最后个元素
pollLast:移除队列的最后个元素,除非它为空 。返回 boolean

相同:容量大于0的时候,删除并返回队头被删除的那个元素。
区别:在容量为0的时候,remove()会抛出异常,poll()返回false

getFirst:获取队列的第一个元素
peekFirst:获取队列的第一个元素。队列为空返回 null
getLast:获取队列的最后一个元素
peekLast:获取队列的第一个元素。队列为空返回 null

获取队头元素(不删除):element()、peek()
相同:容量大于0的时候,都返回队头元素。但是不删除。
区别:容量为0的时候,element()会抛出异常,peek()返回null。

做下小整理:

第一个元素 (头部)最后一个元素 (尾部)
抛出异常特殊值抛出异常特殊值
插入addFirst(e)offerFirst(e)addLast(e)offerLast(e)
删除removeFirst()pollFirst()removeLast()pollLast()
检查getFirst()peekFirst()getLast()peekLast()
  • 作者:AmbitionLover
  • 原文链接:https://blog.csdn.net/qq_38962655/article/details/115129514
    更新时间:2022-10-28 10:15:32