Java集合类学习--Queue, Deque

概述

Queue 和 Deque 都是接口。其中 Queue 接口定义的是一个队列,它包含队列的基本操作:入队(enqueue)和出队(dequeue)。

Deque 接口继承自 Queue 接口,表示双端队列(Double-ended queue),同时具备「队列」和「栈」的性质。二者的继承关系如下:
在这里插入图片描述

Queue

Queue是一个接口,有如下方法:
在这里插入图片描述
代码不多,一共200多行,根据操作可以分为三类:入队、出队和遍历。

入队:add() 和 offer()
二者区别在于:当队列空间已满无法入队时,add() 方法会抛出异常;而 offer() 会返回 false。
出队:remove() 和 poll()
二者区别在于:当队列为空时,remove() 方法会抛出异常,而 poll() 会返回 null。
遍历:element() 和 peek()
element() 和 peek() 都表示检索但不移除队列头部元素,可用于从头开始遍历队列。
二者区别在于:当队列为空时,element() 方法会抛出异常,而 peek() 会返回 null。

抛异常返回值
insertadd(e)offer(e)
removeremove()poll()
examineelement()peek()

Deque

Deque 接口继承自 Queue 接口,可以将 Deque 理解为「双端队列 」和「栈(Stack)」的组合。
一般的队列是从尾部插入元素、头部移除元素;而双端队列则可以分别从两端插入元素、两端移除元素。

Deque 接口方法定义如下:
在这里插入图片描述
由于 Deque 继承了 Queue 接口,因此 Queue 的方法在 Deque 中也有体现,Deque 定义的方法如下:

在这里插入图片描述

Deque 还有几个独有的方法:

removeFirstOccurrence():从该双端队列中移除第一次出现的指定元素;
removeLastOccurrence():从该双端队列中移除最后一次出现的指定元素;
descendingIterator():以相反顺序返回此双端队列中元素的迭代器,可以认为是 iterator() 反过来。

小结

Queue 和 Deque 都可用于表示队列;
Queue 表示基本的队列,包含队列的「入队」和「出队」操作;
Deque 继承自 Queue,除了基本的队列操作,Deque 是一个「双端队列」,可以认为它有两个头、两个尾;而且,Deque 还可以作为一个栈。

©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页