Queue的原理:
Queue,队列,以先进先出
的方式访问和存储元素,也就是说,从后面添加元素,从前面删除元素。
它的实现有以下三种方式:
// 使用 LinkedList 创建
Queue<String> animal1 = new LinkedList<>();
// 使用 ArrayDeque 创建
Queue<String> animal2 = new ArrayDeque<>();
// 使用 PriorityQueue创建 (优先级队列)
Queue<String> animal3 = new PriorityQueue<>();
Queue的方法与Deque类似,就是只有队列头部删除、尾部增加的方法,所以就以Deque为例进行总结。
Deque的常用方法:
Deque的常用方法——添加元素
- add() - 将指定的元素插入队列尾部。如果任务成功,则add()返回true,否则将引发异常。
- addFirst() - 将指定的元素插入队列头部。如果任务成功,则addFirst()返回true,否则将引发异常。
- offer() - 将指定的元素插入队列尾部。如果任务成功,则offer()返回true,否则返回false。
- offerFirst() - 将指定的元素插入队列头部。如果任务成功,则offerFirst()返回true,否则返回false。
- push() - 将指定的元素插入队列头部。如果任务成功,则push()返回true,否则返回false。
Deque的常用方法——查看元素
- element() - 返回队列的开头。如果队列为空,则引发异常。
- peek() - 返回队列的开头。 如果队列为空,则返回null。
- getFirst() - 返回队列的开头。 如果队列为空,则返回null。
- getLast() - 返回队列的结尾。 如果队列为空,则返回null。
Deque的常用方法——删除元素
- remove() - 返回并删除队列的头部。如果队列为空,则引发异常。
- removeLast() - 返回并删除队列的尾部。如果队列为空,则引发异常。
- poll() - 返回并删除队列的开头。 如果队列为空,则返回null。
- pollLast() - 返回并删除队列的尾部。 如果队列为空,则返回null。
- pop() - 返回并删除队列的开头。 如果队列为空,则引发异常。
Deque的其余方法
- contains() - 检查队列是否包含该元素。如果队列不包含,则返回false,包含返回true。
- size() - 返回队列中存储元素的个数。
- isEmpty() - 返回队列中元素是否为空。
- for-each循环 - 迭代队列中的元素。
- iterator() - 迭代队列中的元素。
//通过迭代器迭代Deque
Deque<String> deque = new LinkedList<>();
deque.add("element 0");
deque.add("element 1");
deque.add("element 2");
Iterator<String> iterator = deque.iterator();
while(iterator.hasNext(){
String element = iterator.next();
}
Queue的常用方法:
throw Exception | 返回false或null | |
---|---|---|
添加元素到队尾 | add(E e) | boolean offer(E e) |
取队首元素并删除 | E remove() | E poll() |
取队首元素但不删除 | E element() | E peek() |