java中的队列利用的是java提供的Queue接口,该接口代表了一个队列。包含了三个标志性的方法:
插入:在队列的rear端插入数据。
删除:在队列的front端删除数据。
访问:访问front端的数据元素。
删除:在队列的front端删除数据。
访问:访问front端的数据元素。
方法对比:
| 抛出异常版本 | 返回特殊值版本 | |
| 插入 | add(element) | offer(element) |
| 移除 | remove() | poll() |
| 检查 | element() | peek() |
参考代码:
import java.util.LinkedList;
import java.util.Queue;
public class Jqueue {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<Integer>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
queue.offer(4);
System.out.println(queue.toString());
System.out.println("调用移除方法:" + queue.poll());
System.out.println("移除后的队列:" + queue.toString());
System.out.println("检查返回此时的第一个值:" + queue.peek());
}
}
截图:

双向队列
双向队列(deque)是一种可以在两端均进行插入删除操作的队列。
方法对比:
前者表示从头部操作, 后者(即红色部分)表示从尾部进行操作:
| 抛出异常 | 特殊值 | 抛出异常 | 特殊值 | |
| 插入 | addFirst(element) | offerFirst(element) | addLast(element) | offerFirst(element) |
| 移除 | removeFirst() | pollFirst() | removeLast() | pollLast() |
| 检查 | getFirst() | peekFirst() | getLast() | peekLast() |
与Queue中的方法对比(继承Queue接口中的方法):
| Queue | Deque |
| add(element) | addLast(element) |
| offer(element) | offerLast(element) |
| remove() | removeFirst() |
| poll() | pollFirst() |
| element() | getFirst() |
peek() | peekFirst() |
只需要引用Deque接口即可:
对比引用Queue接口中的代码(修改为如下即可):
Deque<Integer> dq = new LinkedList<Integer>();而双向队列也可以用作FILO的堆栈,此时元素被推入双向队列的头并从头弹出。方法等效:
| Stack | Deque |
| push(element) | addFirst(element) |
| pop() | removeFirst() |
| peek() | peekFirst() |
此时使用Deque中的三种方法,参考如下:
public static void main(String[] args) {
Deque<Integer> dq = new LinkedList<Integer>();
dq.addFirst(1);
dq.addFirst(2);
dq.addFirst(3);
dq.addFirst(4);
System.out.println(dq.toString());
System.out.println("调用移除方法:" + dq.removeFirst());
System.out.println("移除后的队列:" + dq.toString());
System.out.println("检查返回此时的第一个值:" + dq.peekFirst());
}
以上是这篇的全部内容,如果有错误或需要改进的地方,请指教。谢谢!

本文详细介绍了Java中队列(Queue)与双向队列(Deque)的基本概念及常用方法,包括插入、移除和检查等操作,并提供了具体的实现代码示例。
205

被折叠的 条评论
为什么被折叠?



