Java中 ArrayDeque 的 pollFirst 与 pollLast 方法处理队头队尾元素
先来看一个基础但关键的操作:pollFirst 和 pollLast 是 ArrayDeque 里两个 O(1) 时间复杂度的“移除并返回端点元素”方法。简单说,它们一个管队头,一个管队尾,空队列时都返回 null,不会抛异常,不触发扩容,也非线程安全。 pollFirst 和 pollLast 是
先来看一个基础但关键的操作:pollFirst 和 pollLast 是 ArrayDeque 里两个 O(1) 时间复杂度的“移除并返回端点元素”方法。简单说,它们一个管队头,一个管队尾,空队列时都返回 null,不会抛异常,不触发扩容,也非线程安全。

pollFirst 和 pollLast 是 ArrayDeque 中用于移除并返回队列端点元素的核心方法,分别操作队头(前端)和队尾(后端)。它们都返回被移除的元素,若队列为空则返回 null。
pollFirst:从队头移除元素
它的行为模拟了队列的先进先出(FIFO)——取出并删除当前最靠前的元素,也就是下标最小的有效元素。内部通过调整头指针(head)实现,时间复杂度 O(1)。注意,它不检查元素是否为 null,只依据队列结构判断是否存在有效元素。
- 空队列调用返回
null,不会抛异常 - 适合用作双端队列的“出队”操作,比如 BFS 中按层处理时从头取节点
- 与
removeFirst()不同,后者为空时抛NoSuchElementException
pollLast:从队尾移除元素
这一方法模拟了栈的后进先出(LIFO)——取出并删除当前最靠后的元素,即下标最大的有效元素。内部通过调整尾指针(tail)完成,同样是 O(1)。
- 常用于需要回溯或逆序处理的场景,比如解析表达式、撤销操作缓存
- 与
removeLast()的区别同样在于空队列时返回null还是抛异常 - 若将
ArrayDeque当作栈使用,pollLast()等价于栈的pop()
使用时需注意的细节
这两个方法都不涉及数组扩容或缩容,只改变逻辑边界;实际底层数组空间可能仍保留已移除元素的引用,但后续插入会自然覆盖。多线程环境下非线程安全,需要外部同步。
- 不要依赖返回值是否为
null来判断元素本身是否为null——因为ArrayDeque允许存入null,但pollFirst/pollLast返回null只表示队列为空 - 若需区分“空队列”和“队列含 null 元素”,应提前用
isEmpty()判断 - 连续多次调用不会导致性能衰减,因底层是循环数组,头尾指针独立移动
简单对比示例
假设初始化 ArrayDeque:
dq.pollFirst()→ 返回"a",队列变为["b", "c"]dq.pollLast()→ 返回"c",队列变为["b"]- 再调用
pollFirst()→ 返回"b",队列变为空 - 此时再调用任一方法都返回
null
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。
Ableton Live 是面向音乐制作人与现场表演者的数字音频工作站,提供编曲视图、独具特色的现场视图、音频录制、MIDI创作、实时变速、乐器及效果器。Mac版原生支持Apple芯片,并可连接音频接口、MIDI控制器和第三方插件。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。














