- Queue类的简介
- Queue类方法的使用
- Deque类的简介
- Deque类方法的使用
- ArrayDeque类的简介
- ArrayDeque类方法的使用
Queue是Java中实现队列的接口,只有6个方法,一般只用其中3个就可以。Queue的实现类有LinkedList和PriorityQueue,最常用的实现类是LinkedList。
Queue类方法的使用-
压入元素(添加)-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 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类的简介
Deque是一个双端队列接口,继承Queue接口,Deque的实现类是LinkedList、ArrayDeque和LinkedBlockingDeque,其中LinkedList是最常用的。
Deque有三种用途:普通队列(一端进另一端出)、双端队列(两端都可进出)、堆栈。
- 普通队列
Queue queue = new LinkedList()或Deque deque = new LinkedList()
- 双端队列
Deque deque = new LinkedList()
- 堆栈
Deque deque = new LinkedList()
Deque类方法的使用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() |
ArrayDeque不是线程安全的,ArrayDeque不可以存取null元素,因为系统根据某个位置是否为null来判断元素的存在,当作为栈使用时,性能比Stack好;当作为队列使用时,性能比LinkedList好。
ArrayDeque类方法的使用-
ArrayDeque类方法类似于Deque类方法,这里不做介绍。
-
其他方法:
size()获取队列中元素个数
isEmpty() 判断队列是否为空
contains(Object o) 判断队列中是否存在该元素
toArray() 转换成数组



