# Queue
队列是一种支持 FIFO(先进先出) 的数据结构,尾部添加、头部删除,跟我们生活中的排队类似。Queue 接口也继承自 Collection 接口,主要实现有LinkedList、PriorityQueue、BlockingQueue等。
# 队列常用方法
方法名 | 方法描述 |
---|---|
add | 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 |
remove | 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常 |
element | 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常 |
offer | 添加一个元素并返回true 如果队列已满,则返回false |
poll | 移除并返问队列头部的元素 如果队列为空,则返回null |
peek | 返回队列头部的元素 如果队列为空,则返回null |
put | 添加一个元素 如果队列满,则阻塞 |
take | 移除并返回队列头部的元素 如果队列为空,则阻塞 |
# 双端队列
普通的队列只可以在队尾添加数据,队头获取数据,但是双端队列两端都可以添加或获取数据,即可以打破先进先出的规则,所以双端队列也可以当做栈使用(后进先出),在 Java 中 实现 Dequeue 接口的均为双端队列。
对应方法:
Queue 方法 | 等效Deque方法 |
---|---|
add(e) | addLast(e) |
offer(e) | offerLast(e) |
remove() | removeFirst() |
poll() | pollFirst() |
element() | getFirst() |
peek() | peekFirst() |
栈方法 | 等效Deque方法 |
---|---|
push(e) | addFirst(e) |
pop() | removeFirst() |
peek() | peekFirst() |
# 实现介绍
LinkedList 请参照LinkedList
阻塞队列 PriorityQueue、BlockingQueue 请参照阻塞队列