【Java】Stack和Deque

Java中使用Deque代替使用Stack

在这里插入图片描述

  • Vector 很多方法都用了synchronized修饰,线程安全,但效率太低,已被弃用。
  • Stack 继承Vector,暴露了set/get方法,可以进行随机位置的访问,与与Stack 的设计理念相冲突
Deuqe
  • Deuqe,即“double ended queue”的缩写,是Java中的双端队列集合类型。
  • 具备普通队列FIFO的功能,也具备了Stack的LIFO功能。
  • Deque可以由ArrayDeuqe或者LinkedList实现
ArrayDeque与LinkedList
  • ArrayDeque
    1、数组结构:可变数组来实现
    2、没有容量限制,可根据需求自动进行扩容。无法确定数据量时,后期扩容会影响效率
    3、作为栈来使用,效率要高于 Stack,作为队列来使用,效率相较于基于双向链表的LinkedList也要更好一些
    4、不支持为null的元素
  • LinkedList
    1、链表结构
    2、没有容量限制,可根据需求自动进行扩容。无法确定数据量时,有更好表现(在插入和删除时优于ArrayList,随机访问ArrayList更优)
    3、作为栈、队列或双端队列
    4、插入元素能为null
Deque中常用方法

boolean contains deque为空时不会抛异常
void addFirst(E e) 将指定的元素插入此双端队列的前面 ,空间不足抛异常
void addLast(E e) 将指定的元素插入此双端队列的后面 ,空间不足抛异常
E removeFirst() 检索并删除第一个元素,为空时抛出异常
E removeLast() 检索并删除最后一个元素,为空时抛出异常
E getFirst() 只看看第一个元素 ,不出来,为空就抛异常
E getLast() 只看看最后一个元素 ,不出来,为空就抛异常


参考:
https://chengfeng96.com/blog/2018/01/20/Java%E4%B8%AD%E7%94%A8Deque%E6%8E%A5%E5%8F%A3%E4%BB%A3%E6%9B%BFStack%E6%8E%A5%E5%8F%A3%E5%AE%8C%E6%88%90%E6%A0%88%E5%8A%9F%E8%83%BD/
https://www.cnblogs.com/code-duck/p/13569388.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值