pollLast() 和poll啥区别

在 Java 中,pollLast()poll()Deque 接口的两个不同的方法,它们都用于从双端队列中移除并返回元素,但它们移除元素的位置不同:

  1. poll():

    • poll() 方法从双端队列的前端移除并返回第一个元素(即队列的头部)。如果队列是空的,那么方法将返回 null
复制代码
   import java.util.LinkedList;
   import java.util.Deque;

   public class Main {
       public static void main(String[] args) {
           Deque<Integer> deque = new LinkedList<>();
           deque.addLast(1); // deque: [1]
           deque.addLast(2); // deque: [1, 2]
           deque.addLast(3); // deque: [1, 2, 3]

           // poll() 移除并返回队列前端的元素
           System.out.println(deque.poll()); // 输出 1, deque: [2, 3]

           // pollLast() 移除并返回队列后端的元素
           System.out.println(deque.pollLast()); // 输出 3, deque: [2]
       }
   }

pollLast():

  • pollLast() 方法从双端队列的后端移除并返回最后一个元素(即队列的尾部)。如果队列是空的,那么方法同样将返回 null

这两种方法的主要区别在于它们操作队列的位置不同,poll() 操作队列的前端,而 pollLast() 操作队列的后端。

在滑动窗口最大值问题的解决方案中,pollLast() 被用来移除那些不再属于当前窗口的元素,或者那些在当前窗口内不是最大值的元素。这样做是为了确保队列中始终保持着当前窗口内的最大值,并且队列的前端始终指向最大值的索引。

以下是 LinkedList 实现 Deque 接口时这两个方法的一个简单示例:

在这个示例中,我们可以看到 poll()pollLast() 如何分别从双端队列的两端移除元素。

相关推荐
木斯佳5 小时前
前端八股文面经大全:字节跳动音视频前端一面·下(2026-03-03)·面经深度解析
前端·音视频·状态模式
前端不太难13 小时前
Flutter Web / Desktop 为什么“能跑但不好用”?
前端·flutter·状态模式
前端不太难13 小时前
Flutter 国际化和主题系统如何避免后期大改?
flutter·状态模式
木斯佳13 小时前
前端八股文面经大全:X transfer前端一面(2026-03-10)·面经深度解析
前端·状态模式
巴巴博一17 小时前
UniApp 纯前端实现企业级购物车:Vuex + Storage 多用户状态管理闭环方案
前端·vue.js·uni-app·状态模式
清空mega17 小时前
《学 Vue3 前需要掌握什么基础?HTML、CSS、JavaScript 与 ES6 一次讲清》
状态模式
前端不太难17 小时前
一个真实鸿蒙 App 的工程目录结构
华为·状态模式·harmonyos
希望永不加班18 小时前
Spring Boot 统一异常处理:从混乱到优雅的实用方案
java·spring boot·后端·spring·状态模式
前端不太难18 小时前
OpenClaw:经典 2D 游戏引擎解析
游戏引擎·状态模式
前端不太难1 天前
AI 时代,鸿蒙 App 还需要传统导航结构吗?
人工智能·状态模式·harmonyos