ArrayDeque是Java中基于可变数组的高效双端队列,支持两端插入删除,适用于栈、队列场景。初始化可指定容量以优化性能,默认不设容量。作为队列使用时遵循FIFO原则,通过offer()入队、poll()出队,peek()查看头部元素;作为栈使用时遵循LIFO原则,push()压入、pop()弹出,操作均在头部进行。提供addFirst/addLast、offerFirst/offerLast等方法实现双端操作,对应removeFirst/removeLast和pollFirst/pollLast用于删除,getFirst/getLast查看元素。推荐使用返回null而非抛异常的poll和peek系列方法。ArrayDeque不支持null值,插入null会抛出NullPointerException。相比LinkedList和ArrayList,在队列和栈操作中性能更优,建议复用实例避免频繁创建销毁以提升效率。

ArrayDeque 是 Java 中一个高效的双端队列实现,基于可变大小的数组。它允许从两端高效地插入和删除元素,非常适合用作栈、队列或双端队列场景。
创建和初始化 ArrayDeque
使用 ArrayDeque 非常简单,不需要指定初始容量也可以,但可以传入初始容量来优化性能。
-
Deque
deque = new ArrayDeque(); 创建一个默认容量的双端队列 -
Deque
deque = new ArrayDeque(16); 指定初始容量为16
作为队列使用(FIFO)
ArrayDeque 可以当作普通队列使用,遵循先进先出原则。使用 add() 或 offer() 入队,remove() 或 poll() 出队。
- deque.offer("first"); 在尾部添加元素
- String element = deque.poll(); 从头部取出并移除元素
- deque.peek(); 查看头部元素但不移除
作为栈使用(LIFO)
ArrayDeque 也适合做栈,性能优于旧的 Stack 类。所有操作都在头部进行。
立即学习“Java免费学习笔记(深入)”;
Shopxp购物系统历经多年的考验,并在推出shopxp免费购物系统下载之后,收到用户反馈的各种安全、漏洞、BUG、使用问题进行多次修补,已经从成熟迈向经典,再好的系统也会有问题,在完善的系统也从在安全漏洞,该系统完全开源可编辑,当您下载这套商城系统之后,可以结合自身的技术情况,进行开发完善,当然您如果有更好的建议可从官方网站提交给我们。Shopxp网上购物系统完整可用,无任何收费项目。该系统经过
- deque.push("top"); 将元素压入栈顶(相当于 addFirst)
- String top = deque.pop(); 弹出栈顶元素
- deque.isEmpty() 判断栈是否为空,用于循环弹出
双端操作方法
你可以自由地在队列两端进行增删操作。
- deque.addFirst(e); / deque.offerFirst(e);:前端添加
- deque.addLast(e); / deque.offerLast(e);:后端添加(等同于 offer)
- deque.removeFirst(); / deque.pollFirst();:前端删除
- deque.removeLast(); / deque.pollLast();:后端删除
- deque.getFirst(); / deque.getLast();:查看两端元素
注意:带 First 和 Last 的方法让 ArrayDeque 真正发挥双端特性。抛出异常的方法如 removeFirst() 在队列为空时会报错,推荐使用返回 null 的 poll 版本避免异常处理。
基本上就这些。ArrayDeque 不支持 null 值插入,否则会抛出 NullPointerException。在大多数场景下,它比 LinkedList 和 ArrayList 作为队列或栈更高效。不复杂但容易忽略的小细节是:尽量复用实例,避免频繁创建销毁。









