算法训练 day 10|栈与队列 part 01

思路

  • 用两个栈,一个进栈一个出栈来模拟队列。

补充:Java中为什么推荐使用Deque(双端队列)而不推荐使用Stack?

  • ArrayDeque、LinkedList、Stack三者的关系如下图所示,其中Stack继承自Vector,LinkedList实现了List接口和Deque接口,ArrayDeque实现了Deque接口。

  • 为什么不推荐使用Stack?
    • 首先,现在基本都不用Vector了,算是一个Java古老类,写的不太行的古老类,所以自然Stack也不太行。
    • Vector主要是因为其效率不行,很多方法都添加了synchronized修饰,虽然线程安全,但是现在像ArrayDeque、LinkedList这种线程不安全的,在需要安全的时候也可以用Collections.synchronizedCollection()转换为线程安全的,基本算是替代了Vector。
    • Stack只能上进上出,而Deque上进上出,上进下出,甚至下进上出都行,非常灵活。
  • ArrayDeque和LinkedList有什么区别呢?
    • 前者是数组结构,后者是链表结构。
    • 前者插入的元素可以为null,后者可以为null。
    • 前者无法确定数据量的时候,后期扩容会影响效率;后者无法确定数据量的时候则不会影响。
  • ArrayDeque中的pop()和poll()方法返回结果没区别,只是在意义上面前者代表出栈,后者代表出队列

具体使用那些函数,见以下两个链接

Java集合(四三): ArrayDeque_java arraydeque-CSDN博客

Deque (Java Platform SE 8 )

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值