资讯专栏INFORMATION COLUMN

Java™ 教程(Deque接口)

lastSeries / 3092人阅读

Deque接口

通常读作deckdeque是双端队列,双端队列是元素的线性集合,支持在两个端点处插入和移除元素,Deque接口是比StackQueue更丰富的抽象数据类型,因为它同时实现堆栈和队列。Deque接口定义了访问Deque实例两端元素的方法,提供了插入、移除和检查元素的方法,ArrayDeque和LinkedList等预定义类实现了Deque接口。

请注意,Deque接口既可以用作后进先出堆栈,也可以用作先进先出队列,Deque接口中给出的方法分为三个部分。

插入

addfirstofferFirst方法在Deque实例的开头插入元素,方法addLastofferLastDeque实例的末尾插入元素,当Deque实例的容量受到限制时,首选方法是offerFirstofferLast,因为如果队列已满,则addFirst可能无法抛出异常。

移除

removeFirstpollFirst方法从Deque实例的开头删除元素,removeLastpollLast方法从末尾删除元素,如果Deque为空,则方法pollFirstpollLast返回null,而如果Deque实例为空,则方法removeFirstremoveLast会抛出异常。

检索

方法getFirstpeekFirst检索Deque实例的第一个元素,这些方法不会从Deque实例中删除该值。同样,方法getLastpeekLast检索最后一个元素,如果deque实例为空,则方法getFirstgetLast会抛出异常,而方法peekFirstpeekLast将返回NULL

下面列出了12种Deque元素的插入、移除和检索方法:

操作类型 第一个元素(Deque实例的开头) 最后一个元素(Deque实例的结尾)
插入 addFirst(e)
offerFirst(e)
addLast(e)
offerLast(e)
移除 removeFirst()
pollFirst()
removeLast()
pollLast()
检索 getFirst()
peekFirst()
getLast()
peekLast()

除了插入、删除和检查Deque实例的这些基本方法之外,Deque接口还有一些更预定义的方法,其中之一是removeFirstOccurence,如果Deque实例中存在指定元素,则此方法将删除第一个出现的指定元素,如果元素不存在,则Deque实例保持不变。另一种类似的方法是removeLastOccurence,此方法删除Deque实例中最后一次出现的指定元素,这些方法的返回类型是boolean,如果元素存在于Deque实例中,它们将返回true

上一篇:Queue接口 下一篇:Map接口

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73976.html

相关文章

  • Java教程(集合接口

    集合接口 核心集合接口封装了不同类型的集合,如下图所示,这些接口允许独立于其表示的细节来操纵集合,核心集合接口是Java集合框架的基础,如下图所示,核心集合接口形成层次结构。 showImg(https://segmentfault.com/img/bVbntJW?w=402&h=146); Set是一种特殊的Collection,SortedSet是一种特殊的Set,依此类推,另请注意,层次结构...

    elisa.yang 评论0 收藏0
  • Java中的Queue与Deque

    摘要:最小初始化容量。它作为堆栈队列双端队列的操作和的操作是一致的,只是内部的实现不同。根据元素内容查找和删除的效率比较低,为。但是接口有对应的并发实现类类。 Queue接口的实现类 Queue接口作为队列数据结构,java在实现的时候,直接定义了Deque接口(双端队列)来继承Queue接口,并且只实现Deque接口。这样java中的双端队列就囊括了队列、双端队列、堆栈(Deque接口又定...

    zhangrxiang 评论0 收藏0
  • java集合-List

    摘要:会死循环,因为栈内不会弹出所以判断会一直执行。集合用于模拟队列这种数据结构,队列通常是指先进先出的容器。集合不仅提供了的功能,还提供了双端队列,栈的功能。如果有多个线程需要访问集合中的元素,需要考虑使用将几个包装成线程安全集合。 List判断两个对象相等只通过equals方法比较返回true即可。 public class A { @Override public ...

    MasonEast 评论0 收藏0
  • Week 2 - Java 容器 - 详细剖析 List 之 ArrayList, Vector,

    摘要:底层使用的是双向链表数据结构之前为循环链表,取消了循环。快速随机访问就是通过元素的序号快速获取元素对象对应于方法。而接口就是用来标识该类支持快速随机访问。仅仅是起标识作用。,中文名为双端队列。不同的是,是线程安全的,内部使用了进行同步。 前言 学习情况记录 时间:week 2 SMART子目标 :Java 容器 记录在学习Java容器 知识点中,关于List的需要重点记录的知识点。...

    MartinDai 评论0 收藏0
  • 源码|jdk源码之栈、队列及ArrayDeque分析

    摘要:栈队列双端队列都是非常经典的数据结构。结合了栈和队列的特点。因此,在中,有栈的使用需求时,使用代替。迭代器之前源码源码之与字段中分析过,容器的实现中,所有修改过容器结构的操作都需要修改字段。 栈、队列、双端队列都是非常经典的数据结构。和链表、数组不同,这三种数据结构的抽象层次更高。它只描述了数据结构有哪些行为,而并不关心数据结构内部用何种思路、方式去组织。本篇博文重点关注这三种数据结构...

    ZHAO_ 评论0 收藏0

发表评论

0条评论

lastSeries

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<