Queue是Java中实现队列的接口,只有6个方法,一般只用其中3个就可以。Queue的实现类有LinkedList和PriorityQueue,最常用的实现类是LinkedList。
压入元素(添加)-add(e)、offer(e)
同:未超出容量时,从队尾压入元素,函数返回压入的元素。
异:超出容量时,add(e)方法会抛出异常,offer(e)方法返回false。
弹出元素(删除):remove()、poll()
同:容量大于0的时候,删除并返回队头被删除的元素。
异:容量为0的时候,remove()方法会抛出异常,poll()方法返回false。
获取队头元素(检查-不删除):element()、peek()
同:容量大于0的时候,都返回队头元素,但是不删除元素。
异:容量为0的时候,element()方法会抛出异常,peek()方法返回null。
public class QueueTest {
public static void main(String[] args) {
Queue<String> queue = new LinkedList();
queue.offer("元素A");
queue.offer("元素B");
queue.offer("元素C");
queue.offer("元素D");
queue.offer("元素E");
while (queue.size() > 0) {
String element = queue.poll();
System.out.println(element);
}
}
}
// 元素A
// 元素B
// 元素C
// 元素D
// 元素E
Deque是一个双端队列接口,继承Queue接口,Deque的实现类是LinkedList、ArrayDeque和LinkedBlockingDeque,其中LinkedList是最常用的。
Deque有三种用途:普通队列(一端进另一端出)、双端队列(两端都可进出)、堆栈。
Queue queue = new LinkedList()或Deque deque = new LinkedList()
Deque deque = new LinkedList()
Deque deque = new LinkedList()
Java官方推荐使用Deque替代Stack使用,Deque堆栈操作方法:push()、pop()、peek()(未曾遇到暂时不做总结)。
队头元素操作| 抛出异常 | 特殊值(null或false) | |
|---|---|---|
| 添加 | addFirst(e) | offerFirst(e) |
| 删除 | removeFirst() | pollFirst() |
| 检查 | getFirst() | peekFirst() |
队尾元素操作| 抛出异常 | 特殊值(null或false) | |
|---|---|---|
| 添加 | addLast(e) | offerLast(e) |
| 删除 | removeLast() | pollLast() |
| 检查 | getLast() | peekLast() |