Queue 队列|学习笔记

简介: 快速学习 Queue 队列

开发者学堂课程【Java高级编程Queue  队列】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/20/detail/423


Queue  队列


内容简介:


1、Queue 队列的概念

2、Queue 队列的操作形式

3、PriortyQueue 优先级队列的实现


1、Queue 队列 

Queue 描述的是一个队列,主要特点是实现先进先出的操作形式。

基本的操作形式:Queue 两个端点。一端是队尾,一端是队头或队首所有的操作数据都是通过队首一个一个的往里输入,这是队列的一个操作的本质,在实际的处理操作过程之中,有两个操作形式

例如:一个人在队首进行数据获取充当消费者的身份,另外一个人要在队尾进行数据生产充当生产者的身份。

在追加队列的整个处理操作过程之中,生产者不用等消费者,可以一直生产数据,但是消费者依然去等待生产者。          

如果将队列应用在多线程的”生产者与消费者”模型处理上,对于生产者生产过快的情况下,生产者就没有必要等待消费者获取数据,可以将所有的内容直接保存在队列之中。队列跟栈的最大的差别在于队列中数据的先进先出,而栈中是先进后出图片7.png

队列实现可以使用我们的 LinkedList 的子类来完成,观察这个类的定义。

LinkedList 子类的特别的继承结构,在整个操作过程之中,Queue 实现了一个 List队列,队列的操作形式跟大部分的数据处理环境非常的类似。

队列的主要依靠 Queue 接口之中提供的方法来处理提供有如下的方法:

我们的队列之中追加数据public boolean offer(E e)可以直接用 add()方法;

通过我们的队列获取数据public E poll(),弹出后删除数据。

2、Queue 队列的操作形式

范例:实现队列操作

1 1、

2 package cn. mldn. demo;

3

4 import java. util.LinkedList;

5 import java. util. Queue;

6

7 public class JavaAPIDemo {

8     public, static void main(String[] args) throwsException{

9          Queuequeue=newLinkedList() ;

10          queue .offer("X") ; // 追加队列数据,通过队尾11 追加

11          queue.offer("A") ; // 追加队列数据,通过队尾追加

12          queue.offer("Z") ; // 追加队列数据,通1过队尾追加

13          System. out. println(queue.poll()); //弹出数据、X

14          System. out . print1n(queue.poll()); //弹出数据、A

15          System. out . println(queue.pol1()); //弹出数据、Z

16       }

17}

18

19 2、

X

A

Z

在整个过程里面,Queue 实现了基础的先进先出的操作效果。


3、PriortyQueue 优先级队列的实现

除了 LinkedList 的子类,还有一个叫优先级队列的概念。可以使用 PriortyQueue 实现优先级队列比较功能)。

有排序操作的,一定跟 Comparable 接口有直接的对应关系,只有接口之后才好确定优先级的设置问题

这叫做优先级队列的操作处理,在开发过程中可以选用 Queue也可以选用  PriortyQueue。图片8.png

范例:使用优先级队列

1 1、

2 package cn. mldn. demo;

3

4 import java. util.PriortyQueue;

5 import java. util. Queue;

6

7 public class JavaAPIDemo {

8     public, static void main(String[] args) throwsException{

9          Queuequeue=newLinkedList() ;

10          queue .offer("X") ; // 追加队列数据,通过队尾11 追加

11          queue.offer("A") ; // 追加队列数据,通过队尾追加

12          queue.offer("Z") ; // 追加队列数据,通1过队尾追加

13          System. out. println(queue.poll()); //弹出数据、X

14          System. out . print1n(queue.poll()); //弹出数据、A

15          System. out . println(queue.pol1()); //弹出数据、Z

16       }

17}

18

19 2、

A

X

Z

对于队列的选用原始则要根据实际的项目环境来决定的。

相关文章
|
6月前
|
Java API
队列(Queue)
队列(Queue)
44 0
|
6月前
|
存储 消息中间件 前端开发
队列
队列
70 0
|
11月前
|
算法 索引 Python
数据结构与算法-(8)---队列(Queue)
数据结构与算法-(8)---队列(Queue)
60 1
|
11月前
|
C++
c++ 队列
队列的数据结构
36 0
|
机器学习/深度学习 存储 C语言
队列的实现(上)
队列的实现(上)
|
存储 算法
Queue 队列的实现与应用
Queue 队列的实现与应用
114 0
|
存储 Java
Queue——队列
本篇文章介绍与栈比较相像的另一种线性数据结构——队列(Queue),它与栈的数据操作不同。
130 0
Queue——队列
|
存储
队列?是你了解的这样吗?
队列?是你了解的这样吗?
106 0
队列?是你了解的这样吗?
|
开发者 Python
队列的使用| 学习笔记
快速学习队列的使用