参考链接
JAVA 栈,为什么要使用Deque,而不推荐使用Stack,Deque中ArrayDeque与LinkedList的区别,Deque方法详解_java 栈为什么用deque-CSDN博客
可以理解成,双端队列就是可以在队头 和 队尾进行操作,比如:查看队头队尾元素,弹出队头队尾元素,或者从队头和队尾插入元素,那也就意味着他可以用来当做 队列 和 栈 的数据结构使用

先进先出的线性数据结构
方法 | 作用 |
|---|---|
void addLast(E e) | 将指定的元素插入此双端队列的后面 ,空间不足抛异常 |
boolean offerLast(E e) | 将指定的元素插入此双端队列的后面,空间不足返回false |
boolean add(E e) | 将指定的元素插入此双端队列的后面,空间不足抛异常 |
boolean offer(E e) | 将指定的元素插入此双端队列的后面,空间不足返回false |
方法 | 作用 |
|---|---|
E removeFirst()/E remove()/E pop() | 检索并删除第一个元素,为空时抛出异常 |
E pollFirst()/ E poll() | 检索并删除第一个元素 ,为空时返回null |
方法 | 作用 |
|---|---|
E getFirst()/E element()/E pop() | 只看第一个元素 ,不出来,为空就抛异常 |
E peekFirst()/ E peek() | 只看第一个元素 ,不出来,为空时返回null |
public class QueueTest {
public static void main(String[] args) {
Deque<Integer> queue = new LinkedList<>();
// 分别入队 1,2,3
queue.offer(1);
queue.offer(2);
queue.offer(3);
// 查看元素
System.out.println(queue.peek());
// 出队
System.out.println(queue.poll());
// 遍历
for (Integer i : queue) {
System.out.println(i);
}
}
}1
1
2
3先进后出的线性数据结构
方法 | 作用 |
|---|---|
addFirst(E e) | 将指定的元素插入此双端队列的前面 ,空间不足抛异常 |
offerFirst(E e) | 将指定的元素插入此双端队列的前面 ,空间不足插入失败返回回false |
push(E e) | 将指定的元素插入此双端队列的前面 ,空间不足抛异常 |
方法 | 作用 |
|---|---|
E removeFirst()/E remove()/E pop() | 检索并删除第一个元素,为空时抛出异常 |
E pollFirst()/ E poll() | 检索并删除第一个元素 ,为空时返回null |
方法 | 作用 |
|---|---|
E getFirst()/E element()/E pop() | 只看第一个元素 ,不出来,为空就抛异常 |
E peekFirst()/ E peek() | 只看第一个元素 ,不出来,为空时返回null |
public class StackTest {
public static void main(String[] args) {
Deque<Integer> stack = new LinkedList<>();
// 分别入栈 1,2,3
stack.push(1);
stack.push(2);
stack.push(3);
// 查看栈顶元素
System.out.println(stack.peek());
// 出栈
System.out.println(stack.poll());
// 遍历
for (Integer i : stack) {
System.out.println(i);
}
}
}3
3
2
1