文章目录
- 前言
- 一、队列Queue(I)接口
- 二、双端队列Deque(I)
- 2.1 常用api
- 总结
前言
提示:队列与双端队列清楚方法即可,明白入队和出队怎么来的就行,面试也不问,平时不常用。
一、队列Queue(I)接口
概述:队列通常(但并非一定)以 FIFO(先进先出) 的方式排序各个元素。不过优先级队列和 LIFO 队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO(后进先出)的方式对元素进行排序。无论使用哪种排序方式,队列的头 都是调用 remove() 或 poll() 所移除的元素。在 FIFO 队列中,所有的新元素都插入队列的末尾。其他种类的队列可能使用不同的元素放置规则。每个 Queue 实现必须指定其顺序属性。
PS:一般用LinkedList多态实现
1.底层实现:
基于数组或者链表实现
2.特点:
a.先进先出(后进后出)
b.队列也是线性结构,有顺序的,但是本身没有标号
3.常用API:
offer() - 向队列尾部追加元素
poll() - 向队列头部取出元素(出队列)
peek() - 向队列头部获取元素(队列不变)
二、双端队列Deque(I)
Deque是Queue的子接口,是一个线性 Collection,支持在两端插入和移除元素。名称 Deque 是“double ended queue(双端队列)”的缩写,通常读为“deck”。大多数 Deque 实现对于它们能够包含的元素数没有固定限制,但此接口既支持有容量限制的双端队列,也支持没有固定大小限制的双端队列。
PS:一般用LinkedList多态实现
2.1 常用api
总结
Queue和Deque都是接口,依赖于其实现类进行调用其中的方法,常用实现类有LinkedList和ArrayDeque。