首页 > 其他分享 >LinkedList(Deque)中添加/删除方法

LinkedList(Deque)中添加/删除方法

时间:2024-01-25 10:02:24浏览次数:20  
标签:Deque LinkedList 删除 添加 从队 源自

  转:https://www.jianshu.com/p/ae28d514003c

 

1 简介

  最近在使用LinkedList/Deque的时候,发现其中有很多类似的方法,我就想简简单单做个添加/删除的操作,发现竟然有那么多类似的方法,比如“添加”操作可以用的方法有:add/offer/push/offerFirst/offerLast,“删除”操作可以用的方法有:remove/pop/poll/pollFirst/pollLast

  经过一番学习和测试以后,得出以下结论:这些方法从设计之初,分别来自于集合Collections,队列Queue,栈Stack,双端队列Deque,因此它们是有语义的,不建议笼统归为添加/删除。

add和remove是一对,源自Collection;
offer和poll是一对,源自Queue;
push和pop是一对,源自Deque,其本质是栈(Stack类由于某些历史原因,官方已不建议使用,使用Deque代替);
offerFirst/offerLast和pollFirst/pollLast是一对,源自Deque,其本质是双端队列。

 

2 继承关系

  那为什么这些方法,全都出现在LinkedList/Deque中呢,那是由它们的继承关系导致的,请看下图。

  关注圈住的部分,接口Deque继承了以上所有的方法,而类LinkedList实现了以上所有的方法。
  注:由于历史原因,在Java中,官方不建议使用Stack类,而是使用Deque代替,也就是说,接口Deque是栈和双端队列这两种数据结构的集合体。

 

3 结论

  说了这么多,这一堆方法到底有什么区别?其实从他们的出处便可以快速区分并且牢记他们的不同之处。

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

 

标签:Deque,LinkedList,删除,添加,从队,源自
From: https://www.cnblogs.com/jthr/p/17986390

相关文章

  • MSSQL中添加链接数据库
     ----添加mssqlwinddb--以下添加链接数据库脚本:WINDDB210是别名,SQLOLEDB是指链接SQLSERVER数据库,xxx.xxx.xxx.xxx是远程数据库地址,execmaster.dbo.sp_addlinkedserver'WINDDB210','','SQLOLEDB','xxx.xxx.xxx.xxx'--以下对添加链接数据库的登录用户:WINDDB210是别名,us......
  • odbc客户端添加错误检查
    在本节中,我将添加一些简单的错误处理函数,并向您展示如何正确释放您创建的句柄资源。为了使您的ODBC编程更轻松一些,您可以使用以下函数来检查成功或失败:staticboolSQL_OK(SQLRETURNresult){ if(result==SQL_SUCCESS||result==SQL_SUCCESS_WITH_INFO) return(TRUE); els......
  • osg给节点添加材质
      osg给节点添加材质 #include<osg/Material>#include<osg/Geode>#include<osgDB/ReadFile>#include<osgViewer/Viewer>intmain(){//创建一个场景节点osg::ref_ptr<osg::Node>root=newosg::Geode();//创建一个模型节点,这里读取一个模型文......
  • Linux命令:useradd添加用户
    useradd命令的详细使用1.创建一个默认配置的用户$useradduser1创建一个用户,登陆名为user1,『uid』,『group』,『gid』,『shell』,『home_dir』都采用默认值。可以通过$useradd-D来查看配置默认值。uid:用户账户的uid,默认值取决于/etc/login.defs文件中定义的U......
  • 达梦对数据表添加列和删除列优化测试
    背景需求近期项目中碰到一个问题,涉及到应用版本更新,每次更新,就需要对业务系统中上千个表进行增加列或删除列的操作,每个表数据量都比较大,对一个表增加一个列就需要几分钟,导致整个升级需要十几个小时,而同样的在oracle只需要半个小时完成,如果涉及到大版本更新,一次跟新就需要往表添加......
  • add 添加一条数据
    //云端函数'usestrict';constdb=uniCloud.database()exports.main=async(event,context)=>{ constcollection=db.collection(event.name) constres=awaitcollection.add(event.data) returnres};//前端js调用add(){ uni.showLoading({ ti......
  • Kettle部署centos7并添加远程图形界面访问
    Kettle部署centos7并添加远程图形界面访问安装运行环境安装远程访问(xmanager)添加中文支持安装运行环境kettle需要java环境才能运行,因此要安装Java,点击我查看部署jdk。安装图形化界面1yumgroupinstall"XWindowSystem" 上传ketle文件,并上传至服务器......
  • 在IIS中添加7z MIME 类型
    在InternetInformationServices(IIS)中添加7zMIME类型,允许服务器识别和正确处理.7z文件。下面是如何在IIS中添加7zMIME类型的步骤:打开IIS管理器:点击“开始”按钮,打开“运行”,输入inetmgr,然后按回车键,或者通过控制面板中的“管理工具”来启动IIS管理器。选择你要配置......
  • 【Powershell】在 PowerShell 数组中添加和删除项
    在PowerShell数组中添加和删除项是一个可能会导致一些意外的报错,这里我把可用的办法总结一下。问题:创建一个数组,我们将记下System.Array类型:$Fruits="Apple","Pear","Banana","Orange"$Fruits.GetType()但是,如果我们尝试向数组添加或删除项目,则会出现“集合大小固定”的错误......
  • STL-deque双端队列
    STL-deque双端队列目录STL-deque双端队列创建初始化插入元素删除元素遍历容器函数总览deque和vector参考资料deque是double-endedqueue的缩写,又称双端队列容器,可以对其两段的数据进行操作,因为它没有capacity属性,因此不会像vector那样”旧空间不足而重新配置一块更大空间,然后......