pollLast() 和poll啥区别

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


相关文章
|
10月前
每日一道面试题之在 Queue 中 poll()和 remove()有什么区别?
每日一道面试题之在 Queue 中 poll()和 remove()有什么区别?
|
2月前
|
移动开发
poll(2) 源码分析
poll(2) 源码分析
浅谈select,poll和epoll的区别
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! select,poll和epoll其实都是操作系统中IO多路复用实现的方法。 select select方法本质其实就是维护了一个文件描述符(fd)数组,以此为基础,实现IO多路复用的功能。
浅谈select,poll和epoll的区别
|
3月前
|
Unix
poll 函数 I/O 多路复用的技术
【4月更文挑战第14天】poll 是另一种在各种 UNIX 系统上被广泛支持的 I/O 多路复用技术,虽然名声没有 select 那么响,能力一点不比 select 差,而且因为可以突破 select 文件描述符的个数限制,在高并发的场景下尤其占优势。
|
3月前
|
Unix Linux API
select和poll的区别
select和poll的区别
|
Linux
一文搞懂select、poll和epoll区别
一文搞懂select、poll和epoll区别
735 1
一文搞懂select、poll和epoll区别
|
存储 监控 Linux
一文搞懂select、poll和epoll区别(下)
一文搞懂select、poll和epoll区别
301 0
一文搞懂select、poll和epoll区别(下)
一文搞懂select、poll和epoll区别(上)
一文搞懂select、poll和epoll区别
167 0
一文搞懂select、poll和epoll区别(上)
|
Linux 调度 网络协议
poll&&epoll实现分析(一)——poll实现
0.等待队列 在Linux内核中等待队列有很多用途,可用于中断处理、进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。等待队列实现了在事件上的条件等待: 希望等待特定事件的进程把自己放进合适的等待队列,并放弃控制全。
1048 0
|
消息中间件 Unix C语言