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

相关推荐
chinesegf9 小时前
图文并茂的笔记、便签是如何用py开发的
笔记·状态模式
云闲不收2 天前
GraphQL教程
后端·状态模式·graphql
e***98574 天前
SpringMVC的工作流程
状态模式
q***08744 天前
SpringMVC的工作流程
状态模式
g***78914 天前
SpringBoot中使用TraceId进行日志追踪
spring boot·后端·状态模式
shuxiaohua6 天前
使用HttpURLConnection调用SSE采坑记录
状态模式
崎岖Qiu6 天前
状态模式与策略模式的快速区分与应用
笔记·设计模式·状态模式·策略模式·开闭原则
Jonathan Star7 天前
前端需要做单元测试吗?哪些适合做?
前端·单元测试·状态模式
一水鉴天8 天前
整体设计 全面梳理复盘 之40 M3 统摄三层 AI 的动态运营社区(Homepage)设计
架构·transformer·状态模式·公共逻辑
前端玖耀里11 天前
Vue + Axios + Node.js(Express)如何实现无感刷新Token?
状态模式