Java的LinkedList/Deque中add/offer/push,remove/pop/poll的区别

它们来自不同的接口

  • add/remove源自集合,所以添加到队尾,从队头删除;
  • offer/poll源自队列(先进先出 => 尾进头出),所以添加到队尾,从队头删除;
  • push/pop源自栈(先进后出 => 头进头出),所以添加到队头,从队头删除;
  • offerFirst/offerLast/pollFirst/pollLast源自双端队列(两端都可以进也都可以出),根据字面意思,offerFirst添加到队头,offerLast添加到队尾,pollFirst从队头删除,pollLast从队尾删除。

    总结:
  • add/offer/offerLast添加队尾,三个方法等价;
  • push/offerFirst添加队头,两个方法等价。
  • remove/pop/poll/pollFirst删除队头,四个方法等价;
  • pollLast删除队尾。
LinkedList当做集合list,那么应该用add/remove,如果想用作队列,则使用offer/poll,如果用作栈,则使用push/pop,如果用作双端队列,则使用offerFirst/offerLast/pollFirst/pollLast
 
参考:链接

9.Java的LinkedList/Deque相关方法的更多相关文章

  1. Java集合---LinkedList源码解析

    一.源码解析1. LinkedList类定义2.LinkedList数据结构原理3.私有属性4.构造方法5.元素添加add()及原理6.删除数据remove()7.数据获取get()8.数据复制clo ...

  2. JDK1.8源码(六)——java.util.LinkedList 类

    上一篇博客我们介绍了List集合的一种典型实现 ArrayList,我们知道 ArrayList 是由数组构成的,本篇博客我们介绍 List 集合的另一种典型实现 LinkedList,这是一个有链表 ...

  3. java之LinkedList详细介绍

    1 LinkedList介绍 LinkedList简介 LinkedList 是一个继承于AbstractSequentialList的双向链表.它也可以被当作堆栈.队列或双端队列进行操作.Linke ...

  4. 内功心法 -- java.util.LinkedList<E> (3)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  5. 内功心法 -- java.util.LinkedList<E> (4)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  6. 内功心法 -- java.util.LinkedList<E> (5)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  7. 内功心法 -- java.util.LinkedList<E> (6)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  8. 内功心法 -- java.util.LinkedList<E> (7)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  9. 内功心法 -- java.util.LinkedList<E> (8)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  10. 内功心法 -- java.util.LinkedList<E> (1)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

随机推荐

  1. 大数据才是重点,Oracle、SQL Server成昨日黄花?

    转自:https://zhuanlan.zhihu.com/p/100761130 引子有人在某个专注SQL的公众号留言如下: 对SQL Server的鄙视这个留言触碰到一个非常敏感的问题:搞关系型数 ...

  2. Python自动化测试更新selenium的两种方式

    第一种手动实现: 来源 https://www.codeleading.com/article/73395290617/ import os import re import winreg impor ...

  3. gin 使用gorilla 关闭 websocket 时候设置close code 和message

    gin 使用gorilla 时建立websocket的教程很多博客都有写,但是很少有人讲关闭websocket时自定义 close code 和message.主要是使用:websocket.Form ...

  4. 启动 RMAN 客户端并与之交互

    启动和退出 RMAN RMAN 可执行文件与数据库一起自动安装,通常与其他数据库可执行文件位于同一目录中.例如,Linux 上的 RMAN 客户端位于$ORACLE_HOME/bin. 您有以下启动 ...

  5. Required request part 'file' is not present

    问题描述: @RequestMapping(value = "upload", method = RequestMethod.POST,consumes = MediaType.M ...

  6. 运用TextSuite和TestRunner运行测试脚本

    运用TextSuite和TestRunner运行测试脚本 import app.testcase.loginUI import unittest # mysuite = unittest.TestSu ...

  7. 异步Udp监听关闭 出现异常,访问已释放的资源或者其他错误的解决方法

    在开发异步Udp程序的过程中,通常在关闭UDP的时候回遇到诸如socket 访问已释放的资源之类的异常,如下简单操作下: 1 Udp的监听 2 this.serverSocket = new Sock ...

  8. flutter List使用

    _tabbarTitile.map((e){ return Tab( text: e, ); }).toList(),

  9. Linux系统安装&VMware安装三

    第十四步: 开始安装

  10. Linux常用指令1

    1.文件和目录的相关指令: ·cd:打开 ·pwd:查看当前所在的目录 ·mkdir:新建目录 ·rmdir:删除目录 ·ls:文件和目录查看 ·cp:复制 ·rm:删除 ·mv:移动 2.文本文件内 ...