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

相关推荐
大江东去浪淘尽千古风流人物4 天前
【HexVIO】DSP卸载双目惯性VIO:Hexagon向量化前端与单帧融合调度深度解析
前端·状态模式·slam·dsp·vio·hexagon·移动端加速
吃一碗粉只付一碗钱5 天前
12-给SPA友好的401和403响应
c#·状态模式
sunlifenger5 天前
嵌入式部署,解锁张家港智慧灯杆的“极简组网”密码
科技·状态模式
上火的金鱼妹6 天前
关于多进程sse连接通知的实战
javascript·状态模式·sse
阿俊-全栈开发6 天前
LikeShop 小程序商城首页可配置弹窗的设计与实现(Java + uni-app)
小程序·状态模式·likeshop·likeshop开源商城
lingyubb7 天前
配音工具怎么选?从 TTS 合成链路看 6 个可量化参数
状态模式
平头哥技术团队8 天前
从预订问到退房:一间山野民宿的数字人「旅程地图」——Theme07_Homestay.vue 端到端拆解
状态模式·数字人
未来之窗软件服务9 天前
web网络请求竞态问题与取消方案-东方仙盟
前端·状态模式·仙盟创梦ide·东方仙盟·网络取消
一级新生10 天前
多智能体协作:常用协作模式详解
人工智能·状态模式·agent·多智能体·智能体