Queue类的简介
Queue
是Java
中实现队列的接口,只有6个方法,一般只用其中3个就可以。Queue
的实现类有LinkedList
和PriorityQueue
,最常用的实现类是LinkedList
。
Queue类方法的使用
-
压入元素(添加)-add(e)、offer(e)
同:未超出容量时,从队尾压入元素,函数返回压入的元素。
异:超出容量时,add(e)
方法会抛出异常,offer(e)
方法返回null
。 -
弹出元素(删除):remove()、poll()
同:容量大于0的时候,删除并返回队头被删除的元素。
异:容量为0的时候,remove()
方法会抛出异常,poll()
方法返回null
。 -
获取队头元素(检查-不删除):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类的简介
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()
(未曾遇到暂时不做总结)。
Deque类方法的使用
队头元素操作
抛出异常 | 特殊值(null或false) | |
---|---|---|
添加 | addFirst(e) | offerFirst(e) |
删除 | removeFirst() | pollFirst() |
检查 | getFirst() | peekFirst() |
队尾元素操作
抛出异常 | 特殊值(null或false) | |
---|---|---|
添加 | addLast(e) | offerLast(e) |
删除 | removeLast() | pollLast() |
检查 | getLast() | peekLast() |
ArrayDeque类的简介
ArrayDeque
不是线程安全的,ArrayDeque
不可以存取null
元素,因为系统根据某个位置是否为null
来判断元素的存在,当作为栈使用时,性能比Stack
好;当作为队列使用时,性能比LinkedList
好。
ArrayDeque类方法的使用
-
ArrayDeque
类方法类似于Deque
类方法,这里不做介绍。 -
其他方法:
size()
获取队列中元素个数
isEmpty()
判断队列是否为空
contains(Object o)
判断队列中是否存在该元素
toArray()
转换成数组