开发者学堂课程【Scala 核心编程 - 进阶:Queue 基本介绍】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9035
Queue基本介绍
内容介绍:
一、队列 Queue 基本介绍
二、链表和数组实现队列
一、队列 Queue 基本介绍
1.队列的应用场景
场景一
银行排队的案例
场景二
在学 Java 时,有学习到当并发时遇到同步时,有多个线程访问时,会进入到一个队列进行等待,以后自己也会去设计缓冲池,有些高级一些的设计,会在队列中加入优先级,比如有很多并发的任务,调度任务,优先级高低需要定义,需要写一段调度代码,如果在优先级相同的情况下,在队列选择一个任务。
如果在排队的过程中,优先级有高低,那么可以先选择优先级高的任务。
2.队列的说明
1)队列是一个有序列表,在底层可以用数组或是链表来实现。
2)其输入和输出要遵循先入先出的原则(没有带优先级)。即:先存入队列的数据,要先取出,后存入的要后取出。
3)在 Scala 中,由设计者直接给我们提供队列类型使用。
4)在 Scala 中,有两种队列,
分别是 scala.collection.mutalble.Queue (可变队列)和 scala.collection.immutable.Queue(不可变队列),一般来说,我们在开发中通常使用可变集合中的队列。队列不能变化的话意义不大,除非有队列不变这个要求。
二、链表和数组实现队列
1.链表实现队列:
假设有一个链表,有一个一个的节点,每个节点依次相连,一个节点指向后一个节的的尾部,最后一个指向尾节点,设尾节点后面的指向尾 kong 前面有一个头节点为 head。
调用时先找到头节点,头节点指向第二个节点,取出第二个节点,取出后丢出该节点,然后让头节点指向下一个节点,所以第二个节点被当成垃圾被回收,第三个节点也被丢出,头节点依次指向后面的节点遍历,最后 kong 指向新节点。
2.数组实现队列
通过一个小算法,用数组形成一个环形队列