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

Ja va中 ArrayDeque 的 pollFirst 与 pollLast 方法处理队头队尾元素

pollFirstpollLastArrayDeque 中用于移除并返回队列端点元素的核心方法,分别操作队头(前端)和队尾(后端)。它们都返回被移除的元素,若队列为空则返回 null

pollFirst:从队头移除元素

它的行为模拟了队列的先进先出(FIFO)——取出并删除当前最靠前的元素,也就是下标最小的有效元素。内部通过调整头指针(head)实现,时间复杂度 O(1)。注意,它不检查元素是否为 null,只依据队列结构判断是否存在有效元素。

pollLast:从队尾移除元素

这一方法模拟了栈的后进先出(LIFO)——取出并删除当前最靠后的元素,即下标最大的有效元素。内部通过调整尾指针(tail)完成,同样是 O(1)。

使用时需注意的细节

这两个方法都不涉及数组扩容或缩容,只改变逻辑边界;实际底层数组空间可能仍保留已移除元素的引用,但后续插入会自然覆盖。多线程环境下非线程安全,需要外部同步。

简单对比示例

假设初始化 ArrayDeque dq = new ArrayDeque(Arrays.asList("a", "b", "c"))

本文转载于:https://www.php.cn/faq/2854916.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。