Java-Deque和Queue的使用、辨析和实战案例

0.前言

        在数据结构与算法中,队列是被经常使用的一种数据结构,总体上构成较为简单,但是Java在实际使用时易用错,经常会。比如 poll() 方法,add() 方法,offer() 方法,addFirst()方法,removeFirst()方法,removeLast() 方法,它们之间的对应关系是怎么样的,Queue和Deque使用和功能有何不同?本文主要探究这些问题。

1.队列这种数据结构

        作为一种经典的数据结构,栈承担了先进后出的责任,而在先进先出这方面,则由队列来完成。队列有单向队列,即最经典的队列,一头进,另一头出,而双端队列,两端都可以进出,比较灵活,所以造成了双端队列的api较多,在实际使用中经常会搞错方向。

        还有就是队列的头尾问题,分不清很容易在双端队列的removeFirst()方法或者是removeLast()方法中混淆。队列中的元素从哪边出去就是队列头,双端队列中两边都可以出去,但是沿着元素进入的方向能走出队列的一端为头。

        需要注意的是,队列是操作受限的线性表,所以,不是任何对线性表的操作都可以作为队列的操作。比如,不可以随便读取队列中间的某个数据。【3】

        关于队列的结构还可参考这篇文章,有助于理解:

        栈和队列相互实现 (用队列实现栈/用栈实现队列) 超详细~

2.Java Queue

        在Java中,Queue是队列的接口,主要的方法有6个,比较简单。常用的实现类有两个:LinkedList<>()和ArrayDeque<>()。

        官方文档:

1.add() 方法

添加元素到队尾

2.element()方法

查看队首元素

3.offer()方法

添加元素到队尾,和add()作用相同。队列有大小限制,在一个满的队列中加入一个新项,调用 add() 方法就会抛出一个 unchecked 异常,而调用 offer() 方法会返回 false,因此就可以在程序中进行有效的判断。【1】

4.peek()方法

查看队首元素,和peek()相同。队列为空, element()方法会抛出一个异常,peek() 返回 null。

5.poll()方法

删除队首元素

6.remove()方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值