文章目录

  • 前言
  • 一、队列Queue(I)接口
  • 二、双端队列Deque(I)
  • 2.1 常用api
  • 总结



前言

提示:队列与双端队列清楚方法即可,明白入队和出队怎么来的就行,面试也不问,平时不常用。

python双端队列使用 双端队列排序_python双端队列使用


一、队列Queue(I)接口

概述:队列通常(但并非一定)以 FIFO(先进先出) 的方式排序各个元素。不过优先级队列和 LIFO 队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO(后进先出)的方式对元素进行排序。无论使用哪种排序方式,队列的头 都是调用 remove() 或 poll() 所移除的元素。在 FIFO 队列中,所有的新元素都插入队列的末尾。其他种类的队列可能使用不同的元素放置规则。每个 Queue 实现必须指定其顺序属性。

PS:一般用LinkedList多态实现

1.底层实现:

基于数组或者链表实现

2.特点:

a.先进先出(后进后出)
b.队列也是线性结构,有顺序的,但是本身没有标号

3.常用API:

offer() - 向队列尾部追加元素
poll() - 向队列头部取出元素(出队列)
peek() - 向队列头部获取元素(队列不变)

python双端队列使用 双端队列排序_java_02


python双端队列使用 双端队列排序_queue_03


python双端队列使用 双端队列排序_java_04


二、双端队列Deque(I)

Deque是Queue的子接口,是一个线性 Collection,支持在两端插入和移除元素。名称 Deque 是“double ended queue(双端队列)”的缩写,通常读为“deck”。大多数 Deque 实现对于它们能够包含的元素数没有固定限制,但此接口既支持有容量限制的双端队列,也支持没有固定大小限制的双端队列。

PS:一般用LinkedList多态实现

2.1 常用api

python双端队列使用 双端队列排序_java_05


python双端队列使用 双端队列排序_queue_06


总结

Queue和Deque都是接口,依赖于其实现类进行调用其中的方法,常用实现类有LinkedList和ArrayDeque。