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() 如何分别从双端队列的两端移除元素。

相关推荐
ZC跨境爬虫4 小时前
UI前端美化技能提升日志day1:矢量图片规范与自适应控制栏实战
前端·css·ui·状态模式
ZC跨境爬虫4 小时前
UI前端美化技能提升日志day2:图片优化、字体本地化与设计美感解析
前端·javascript·ui·状态模式
不知名的老吴5 小时前
思考:设计模式对前端有用吗?
设计模式·状态模式
_Evan_Yao5 小时前
软件工程就是一场“抽象”游戏:从 abstract 关键字到架构设计的认知跃迁
java·后端·游戏·状态模式·软件工程
zhenxin012216 小时前
【wiki知识库】07.用户管理后端SpringBoot部分
spring boot·后端·状态模式
他是龙5511 天前
63:JS 加密断点调试与逆向实战
开发语言·javascript·状态模式
无籽西瓜a1 天前
【西瓜带你学设计模式 | 第十九期 - 状态模式】状态模式 —— 状态流转与行为切换实现、优缺点与适用场景
java·后端·设计模式·状态模式·软件工程
Sestid2 天前
前端开发Claude Code使用指南
状态模式·ai编程·claude code
神の愛2 天前
nginx,前端配置请求路径,后端接口应该怎么写??
状态模式
Southern Wind2 天前
我在 Vue3 项目里接入 AI 后,发现前端完全变了
前端·人工智能·状态模式