Java ArrayDeque

介绍:

Java中的ArrayDeque是实现Deque接口的类。 它是双端队列的基于数组的实现。 顾名思义,双端队列是允许我们在前端和后端添加或删除项目的队列。

在开始之前,让我们快速看一下ArrayDeque上的一些值得注意的点:

  • ArrayDeque没有容量限制。 数组的大小根据需要动态增长
  • 我们不能将值添加到ArrayDeque
  • 这不是线程安全的实现
  • 由于双端队列为双端,我们可以使用它作为一个堆栈队列

实例化

我们可以使用以下构造函数之一来实例化ArrayDeque

//creates an empty ArrayDeque with default capacity of 16
ArrayDeque()//creates an ArrayDeque with all the elements present in the given collection
ArrayDeque(Collection c)/*
*constructs an empty ArrayDeque with a capacity sufficient
* to hold given number of elements
*/
ArrayDeque(int numElements)

我们对数据结构执行的最常见操作涉及插入,检索和删除。 在这里,对于每种操作,我们都有两组方法。

对于一组方法,如果操作失败,则会得到异常。 另一组方法将只返回一个指示操作状态的特殊值。

让我们探索这些方法:

运作方式 在头 尾巴
引发异常 返回特殊值 引发异常 返回特殊值
插入 无效addFirst(e) boolean offerFirst(e) 无效addLast(e) boolean offerLast(e)
恢复 E getFirst() E peekFirst() E getLast() E peekLast()
删除/删除 E removeFirst() E pollFirst() E removeLast() E pollLast()

1.插入:

addFirst()/ offerFirst()方法将一个元素添加到Deque的正面。 同样, addLast()/ offerLast()方法将元素添加到末尾。 这两种口味之间的区别是:

  • 如果发生容量冲突, addFirst()/ addLast()方法将引发异常
  • offerFirst()/ offerLast()方法仅因容量不足而返回false

但是, ArrayDeque是无限制的双端队列实现。 因此, offerFirst()/ addFirst()offerLast()/ addLast()方法的行为方式相同。 他们只是根据用法将元素添加到正面或背面:

Deque<Integer> dq = new ArrayDeque<>();dq.addFirst(1);
dq.addLast(2);
dq.offerFirst(3);
dq.offerLast(4);System.out.println(dq); //[3, 1, 2, 4]

2.检索:

getFirst()/ getLast()peekFirst()/ peekLast()方法将分别返回第一个和最后一个元素,而不会将其删除:

Deque<Integer> dq = new ArrayDeque();dq.addFirst(1);
dq.addFirst(2);System.out.println(dq.getFirst() + ":" + dq.peekFirst()); //2:2
System.out.println(dq.getLast() + ":" + dq.peekLast());  //1:1

注意,在空双端队列上调用getFirst()/ getLast()方法将引发异常。 但是,如果双端队列为空,则peekFirst()/ peekLast()方法将返回null

Deque<Integer> dq = new ArrayDeque<>(); // empty dequeInteger val1 = dq.getFirst(); //throws NoSuchElementExceptionInteger val2 = dq.peekFirst(); // null

3.删除:

要从双端队列中删除一个元素,我们可以使用:

  • removeFirst()/ removeLast():分别从双端队列中移除第一个/最后一个元素。 如果双端队列为空,则这些方法将引发异常,或者
  • pollFirst()/ pollLast():分别从双端队列中移除first / last元素。 他们将为空双端队列返回null
Deque<Integer> dq = new ArrayDeque<>();dq.addLast(1);
dq.addLast(2);Integer val1 = dq.removeFirst(); //1
System.out.println(dq); //[2]Integer val2 = dq.pollFirst(); //2
System.out.println(dq); //[]val1 = dq.removeFirst(); // will throw a NoSuchElementException
val2 = dq.pollFirst(); // null

4.其他方法:

让我们看一下其他一些常用方法:

  • void push(E e):将元素压入双端队列的堆栈表示的顶部
  • E pop():在双端队列的堆栈表示顶部弹出一个元素
  • boolean isEmpty():对于空的双端队列返回true
  • int size():返回双端队列所包含的元素数
  • boolean contains(Object obj):如果给定对象存在于双端队列中,则返回true
  • void clear():删除所有双端队列元素
  • E remove():返回并删除head元素
  • boolean removeFirstOccurrence(E e):从头到尾遍历双端队列,并删除指定元素的第一次出现
  • boolean removeLastOccurrence(E e):删除指定元素的最后一次出现

结论:

在本教程中,我们了解了流行的Deque实现类,即ArrayDeque

根据Javadocs,当用作堆栈时,此类可能比Stack快。 另外,用作队列时,它可能比LinkedList更快。 大多数ArrayDeque操作(在前端或后端进行操作)的摊销成本为O(1)

翻译自: https://www.javacodegeeks.com/2019/05/java-arraydeque.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/342676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是单片机

单片机也就是单片微型计算机的简称&#xff0c;由于单片机主要作用于控制领域&#xff0c;所以国际上也通常将单片机称之为微型控制器&#xff0c;单片机与微型计算机都是由CPU、存储器和输入/输出接口等组成的&#xff0c;但两者又有所不同&#xff0c;微型计算机和单片机的基…

光纤中继器的防雷及日常维护方法介绍

光纤中继器是一款中继器&#xff0c;支持以太网 10Mbps、100Mbps、155Mbps、622Mbps、1000Mbps&#xff08;1.25G&#xff09;的任何传输速率&#xff0c;产品广泛应用在光信号放大和光接口转换的通信场景中。今天&#xff0c;飞畅科技的小编来为大家详细介绍下光纤中继器的防雷…

单片机常用的几种通信协议

在单片机的应用中&#xff0c;通信协议是其中必不可少的一部分&#xff0c;上位机与下位机&#xff0c;单片机与单片机&#xff0c;单片机与外设模块之间的通信都需要通信协议实现信息交换和资源共享。由于设备之间不同的传输速率、电气特性、可靠性要求的不同&#xff0c;也产…

Wi-Fi和WLAN有什么区别

随着手机和电脑的不断普及&#xff0c;人们的生活也越来越离不开无线网络。 平常我们说的连WI-FI其实也就是连接无线网络&#xff0c;但是无论是手机还是电脑上&#xff0c;连接网络的那一栏显示的却是WLAN&#xff0c;而不是WI-FI。这两者难道不一样吗&#xff1f;它们有什么…

光纤中继器的安装调试

随着光通信领域的应用逐渐深入&#xff0c;国内通信厂商也逐渐开始自主研发光纤中继器产品&#xff0c;国产中继器的出现使得整个光纤中继器的成本大幅下降&#xff0c;此时&#xff0c;单模光缆和光纤中继器也逐步成熟&#xff0c;使得传输距离更远&#xff0c;效果更好&#…

【渝粤教育】国家开放大学2018年秋季 0688-22T老年精神障碍护理 参考试题

科目编号&#xff1a;0691 座位号&#xff1a; 2018-2019学年度第一学期期末考试 物理化学及实验试题 2019年1月 一、填空题&#xff08;每空4分&#xff0c;共40分&#xff09; 在质点平动运动中有&#xff1a;质量和牛顿第二定律&#xff0c;在刚体转动运动中与之相类似&a…

weakreference_Java中WeakReference,SoftReference,PhantomReference和Strong Reference之间的区别...

weakreference很长一段时间以来&#xff0c;WeakReference和SoftReference都已添加到Java API中&#xff0c;但是并不是每个Java程序员都熟悉它。 这意味着在Java中使用WeakReference和SoftReference的位置和方法之间存在差距。 参考类对于“垃圾收集 ” 如何工作尤为重要。 众…

物联网应用:蓝牙模块在智能门锁中的应用

在现如今&#xff0c;智能门锁的使用已经很广泛了&#xff0c;其原因更多的是智能系统的概念正在逐步改变人们的生活。而基于网络蓝牙的智能门锁、WIFI网络方案智能门锁、基于指纹识别的指纹门锁乃至是人脸识别、虹膜识别的门锁成为了更多人的选择。 智能门锁方案的应用场景 …

【渝粤教育】国家开放大学2018年秋季 0710-22T幼儿园课程活动设计 参考试题

科目编号&#xff1a;0716 座位号 2018-2019学年度第一学期期末考试 工程建设法规 试题 2019年 1 月 一、单选题&#xff08;本大题共5小题&#xff0c;每小题6分&#xff0c;共计30分&#xff09; &#xff08;★请考生务必将答案填入到下面对应序号的答题框中★&#xff09;…

“攻城狮”手把手教你物联网智能生活-内网穿透技术

“攻城狮”手把手教你物联网智能生活-内网穿透技术 内网穿透技术&#xff0c;即实现外网IP访问内网IP而发展起来的一种计算机技术。在了解内网穿透技术之前&#xff0c;我们需要先了解IP和内网外网的概念。 IP&#xff08;InternetProtocol&#xff09;是指的 “网络之间互连…

【渝粤教育】国家开放大学2018年秋季 1042t国际经济法 参考试题

试卷代号&#xff1a;1050 金融理论前沿课题 试题&#xff08;开卷&#xff09; 2019年1月 一、名词解释&#xff08;每小题5分&#xff0c;共15分&#xff09; 1&#xff0e;垄断优势理论&#xff1a; 2&#xff0e;铸币税&#xff1a; 3&#xff0e;赫芬达尔指数&#xff1a;…

光模块常见故障与使用注意事项详解

光模块未正确安装常见故障有哪些&#xff1f;怎样才是正确的安装方法以及光模块注意事项有哪些&#xff1f;接下来我们就跟随飞畅科技的小编一起来详细了解下吧&#xff01; 光模块常见故障 1、光模块端口被污染&#xff0c;会造成光模块无法正常使用。光模块端口有异物堵塞&a…

GitHub上的OpenJDK

创建 Skara项目的目的是“……调查JDK源代码的替代SCM和代码审查选项&#xff0c;包括基于Git而不是Mercurial的选项&#xff0c;以及由第三方托管的选项。” OpenJDK skara-dev邮件列表包括Robin Westberg上周发布的帖子&#xff0c;该帖子宣布&#xff1a;“我们在https://gi…

【渝粤教育】国家开放大学2018年秋季 1116t机电控制工程基础 参考试题

试卷代号&#xff1a;1125 医疗保障原理与政策 试题 2019年1月 一、选择题&#xff08;每题3分&#xff0c;共24分&#xff09; 1&#xff0e;目前我国城镇职工的医疗保险模式为( )。&#xff08;单选题&#xff09; A&#xff0e;社会统筹 B&#xff0e;个人账户 C&#xff0e…

E104-BT02蓝牙无线传输模块物联网芯片的智能控制、采集

蓝牙技术是一种常见的无线连接技术&#xff0c;得益于智能手机的普及&#xff0c;蓝牙越来越多的应用于我们的生活之中。蓝牙连接的设备随处可见&#xff0c;它方便、快捷&#xff0c;只要有手机进行简单的配对就可以对相关的设备进行控制&#xff0c;不需要专业的控制设备&…

【渝粤教育】国家开放大学2018年秋季 1162t开放英语4 参考试题

试卷代号&#xff1a;1183 公共政策概论 试题 2019年1月 一、单项选择题&#xff08;每题2分&#xff0c;共10分&#xff09; 1.指出“公共政策”即为“公共”而制定的政策的是学者( )。 A.药师寺泰藏 B.罗伯特达尔 C.米歇尔哈蒙 D.伍德罗威尔逊 2.将公共政策主体划分为官方决策…

怎样辨别光模块的真假?

光模块(optical module)由光电子器件、功能电路和光接口等组成&#xff0c;光电子器件包括发射和接收两部分。简单的说&#xff0c;光模块的作用就是光电转换&#xff0c;发送端把电信号转换成光信号&#xff0c;通过光纤传送后&#xff0c;接收端再把光信号转换成电信号。那么…

简单介绍蓝牙无线模块和手机进行的车数据交互技巧

将模块设置为唤醒模式的从机模块&#xff0c;上电等候。手机下载BLE调试助手&#xff0c;并打开蓝牙打开APP。在设备中找到从机模块&#xff0c;并连接。 连接成功后&#xff0c;选择“Unknown Service”接收数据选择如图按键&#xff0c;即可收到模块发送来的数据发送数据选择…

【渝粤教育】国家开放大学2018年秋季 1303T护理伦理学 参考试题

试卷代号&#xff1a;1312 学前教育原理 试题 2019年1月 一、单项选择题&#xff08;每小题3分&#xff0c;共30分&#xff09; 1.欧美发达国家创制出指称学前教育的新名词是&#xff08; &#xff09;。 A.ECCE B.ECCC C.CCCE D.EECE 2.学前教育的构成要素是学前教育者、学前受…

【渝粤教育】国家开放大学2018年秋季 1349T学前教育科研方法 参考试题

科目编号&#xff1a;1358 座位号 2018-2019学年度第一学期期末考试 民族理论与民族政策 试题 2019年 1月 填空题&#xff08;每空2分&#xff0c;共16分&#xff09; 1.我国现有的五个自治区为&#xff1a;内蒙古自治区、新疆维吾尔族自治区、广西壮族自治区、、。 2.______…