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类方法的使用