Java中如何使用Deque队列

定义
双向队列:支持插入删除元素的线性集合

特性:

  1. 插入、删除、获取操作支持两种形式:
  2. 快速失败和返回null或true/false 既具有FIFO特点又具有LIFO特点,即是队列又是栈
  3. 不推荐插入null元素,null作为特定返回值表示队列为空
  4. 未定义基于元素相等的equals和hashCode

UML类图
在这里插入图片描述

Deque继承关系

在这里插入图片描述

接口操作

接口分析
双向队列操作

插入元素

 1. addFirst(): 向队头插入元素,如果元素为空,则发生NPE
 2. addLast(): 向队尾插入元素,如果为空,则发生NPE
 3. offerFirst(): 向队头插入元素,如果插入成功返回true,否则返回false
 4. offerLast(): 向队尾插入元素,如果插入成功返回true,否则返回false

移除元素

 1. removeFirst(): 返回并移除队头元素,如果该元素是null,则发生NoSuchElementException
 2. removeLast(): 返回并移除队尾元素,如果该元素是null,则发生NoSuchElementException 
 3. pollFirst(): 返回并移除队头元素,如果队列无元素,则返回null
 4. pollLast(): 返回并移除队尾元素,如果队列无元素,则返回null

获取元素

 1. getFirst(): 获取队头元素但不移除,如果队列无元素,则发生NoSuchElementException
 2. getLast(): 获取队尾元素但不移除,如果队列无元素,则发生NoSuchElementException
 3. peekFirst(): 获取队头元素但不移除,如果队列无元素,则返回null
 4. peekLast(): 获取队尾元素但不移除,如果队列无元素,则返回null

栈操作

  1. pop(): 弹出栈中元素,也就是返回并移除队头元素,等价于removeFirst(),如果队列无元素,则发生NoSuchElementException
  2. push(): 向栈中压入元素,也就是向队头增加元素,等价于addFirst(),如果元素为null,则发生NPE,如果栈空间受到限制,则发生IllegalStateException

应用场景
满足FIFO场景时
满足LIFO场景时,曾经在解析XML按标签时使用过栈这种数据结构,但是却选择Stack类,如果在进行栈选型时,更推荐使用Deque类,应为Stack是线程同步
主要实现
ArrayDeque: 基于数组实现的线性双向队列
LinkedList: 基于链表实现的链式双向队列

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java学习者柯十一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值