java队列deque
时间: 2025-01-24 07:48:22 浏览: 41
### Java中Deque接口的使用方法
#### 1. Deque概述
Deque(Double Ended Queue),即双端队列,是一种特殊的线性表,允许在两端进行插入和删除操作。这种灵活性使得Deque不仅可以用作栈还可以用作用于队列等多种场景[^3]。
#### 2. 创建Deque实例
通常有两种方式来创建`Deque`对象:通过`ArrayDeque`或`LinkedList`。前者基于数组实现而后者则是链表形式。对于大多数应用场景而言,官方更倾向于推荐采用`ArrayDeque`作为首选方案因为其性能表现优异[^1]。
```java
// 使用ArrayDeque创建Deque实例
Deque<String> dequeWithArray = new ArrayDeque<>();
// 或者使用LinkedList创建Deque实例
Deque<Integer> dequeWithList = new LinkedList<>();
```
#### 3. 添加元素到Deque
可以向Deque的一端或者另一端添加新项:
- `addFirst(E e)`/`offerFirst(E e)`
- `addLast(E e)` /`offerLast(E e)`
其中带`Offer`的方法会在无法加入时返回false而不是抛出异常[^4]。
```java
dequeWithArray.addFirst("first");
dequeWithArray.offerLast(2);
```
#### 4. 移除Deque中的元素
同样支持从任意一端移除最前端或是最后端的对象:
- `removeFirst()` / `pollFirst()`
- `removeLast()` / `pollLast()`
当尝试从中取出不存在的东西时候, 不同版本会给出不同的反馈——要么是null要不就是异常。
```java
String removedFromFront = dequeWithArray.removeFirst();
Integer removedFromBack = dequeWithList.pollLast(); // 如果为空则返回null而非报错
```
#### 5. 访问但不移除元素
有时候只需要查看当前队首或队尾是什么样的值而不希望将其弹出去;这时就可以利用下面这些函数来做这件事儿了:
- `peekFirst()`
- `peekLast()`
它们都只会简单地读取对应位置上的内容,并不会做任何改变。
```java
System.out.println(dequeWithArray.peekFirst());
System.out.println(dequeWithList.peekLast());
```
阅读全文
相关推荐


















