发布于2026-07-21 阅读(0)
扫一扫,手机访问
先来看一个基础但关键的操作:pollFirst 和 pollLast 是 ArrayDeque 里两个 O(1) 时间复杂度的“移除并返回端点元素”方法。简单说,它们一个管队头,一个管队尾,空队列时都返回 null,不会抛异常,不触发扩容,也非线程安全。

pollFirst 和 pollLast 是 ArrayDeque 中用于移除并返回队列端点元素的核心方法,分别操作队头(前端)和队尾(后端)。它们都返回被移除的元素,若队列为空则返回 null。
它的行为模拟了队列的先进先出(FIFO)——取出并删除当前最靠前的元素,也就是下标最小的有效元素。内部通过调整头指针(head)实现,时间复杂度 O(1)。注意,它不检查元素是否为 null,只依据队列结构判断是否存在有效元素。
null,不会抛异常removeFirst() 不同,后者为空时抛 NoSuchElementException这一方法模拟了栈的后进先出(LIFO)——取出并删除当前最靠后的元素,即下标最大的有效元素。内部通过调整尾指针(tail)完成,同样是 O(1)。
removeLast() 的区别同样在于空队列时返回 null 还是抛异常ArrayDeque 当作栈使用,pollLast() 等价于栈的 pop()这两个方法都不涉及数组扩容或缩容,只改变逻辑边界;实际底层数组空间可能仍保留已移除元素的引用,但后续插入会自然覆盖。多线程环境下非线程安全,需要外部同步。
null 来判断元素本身是否为 null——因为 ArrayDeque 允许存入 null,但 pollFirst/pollLast 返回 null 只表示队列为空isEmpty() 判断假设初始化 ArrayDeque:
dq.pollFirst() → 返回 "a",队列变为 ["b", "c"]dq.pollLast() → 返回 "c",队列变为 ["b"]pollFirst() → 返回 "b",队列变为空null
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8