这一章节我们来讨论一下队列Queue。
队列对于并发非常的重要,我们这里只是简单讨论一下,在以后讲述并发的时候将详细展开。
1.特性:先进先出,它跟栈的顺序不一样。
2.演示方法
由于LinkedList实现了Queue接口,因此我们将以LinkedList作为例子。
package com.ray.ch09;
import java.util.LinkedList;
import java.util.Queue;
public class Test {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<Integer>();
for (int i = 0; i < 10; i++) {
queue.add(i);
}
System.out.println(queue.toString());
for (int i = 0; i < queue.size(); i++) {
System.out.print(queue.peek());// 拿出第一个元素
}
System.out.println();
for (int i = 0; i < queue.size(); i++) {
System.out.print(queue.poll());// 去掉并返回第一个元素
System.out.println(queue.toString());
}
}
}
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0000000000
0[1, 2, 3, 4, 5, 6, 7, 8, 9]
1[2, 3, 4, 5, 6, 7, 8, 9]
2[3, 4, 5, 6, 7, 8, 9]
3[4, 5, 6, 7, 8, 9]
4[5, 6, 7, 8, 9]
具体方法的使用,可以看注释。
3.PriorityQueue
PriorityQueue是一个有默认优先级的队列
package com.ray.ch09;
import java.util.PriorityQueue;
import java.util.Random;
public class Test {
public static void main(String[] args) {
PriorityQueue<Integer> integers = new PriorityQueue<Integer>();
Random random = new Random();
for (int i = 0; i < 10; i++) {
integers.offer(random.nextInt(50));
}
System.out.println(integers.toString());
PriorityQueue<String> strings = new PriorityQueue<String>();
String text = "d,e,T,g,qe,R,j,k,b,h,G,v,Kj,a,d,h,u,f,g,s,ad,jk,f,";
String[] textArray = text.split(",");
for (int i = 0; i < textArray.length; i++) {
strings.offer(textArray[i]);
}
System.out.println(strings.toString());
}
}
输出:
[12, 14, 18, 18, 26, 41, 30, 44, 33, 43]
[G, R, Kj, e, ad, T, a, h, f, b, f, v, d, j, d, k, u, g, g, s, qe, jk, h]
优先级:
数字是从小到大
字符串是大写到小写
总结:这一章节主要讲述了队列的一些例子。
这一章节就到这里,谢谢。
-----------------------------------
目录
分享到:
相关推荐
在"promise-queue-plus-master"这个压缩包中,包含了Promise Queue Plus的源代码、文档、示例以及可能的测试用例。开发者可以通过阅读源码了解其内部实现原理,参考文档学习如何在项目中使用,并通过示例快速上手。...
Priority Job Queue is an implementation of a Job Queue specifically written for Android to easily schedule jobs (tasks) that run in the background, improving UX and application stability.
Promise Queue 是一个专门用于解决此类问题的开源库,它允许我们以有序、控制流的方式执行基于Promise的异步任务。这个库的核心理念是通过队列机制限制同时运行的任务数量,从而避免系统资源过度消耗,提高应用性能...
这个压缩包 "dask-jobqueue-0.1.0.tar.gz" 包含了 Dask-Jobqueue 的源代码,版本为 0.1.0。 **Dask-Jobqueue 的核心概念** 1. **分布式集群**: Dask-Jobqueue 提供了一种方式,在传统的批处理作业队列系统上启动和...
离线安装包,亲测可用
Queue-Queue-Queue
在Java客户端中,消费者同样需要建立到服务器的连接和Channel,然后通过声明队列(Queue)并进行绑定(Binding)来监听特定的消息。 3. **交换机(Exchange)**:交换机是RabbitMQ内部的结构,它根据路由键和预定义的路由...
本文将深入探讨“前端开源库-js-priority-queue”这一主题,它是一个专门为JavaScript设计的优先级队列实现,为前端开发者提供了一种强大的数据结构,用于优化算法和提高代码执行效率。 **优先级队列简介** 优先级...
数据集合部分会涵盖Java集合框架,包括List、Set、Queue、Map等各种接口和实现类,以及泛型、迭代器、比较器等相关概念。这部分内容有助于读者在实际开发中高效地管理和操作数据。 网络编程章节则会讲解Java的...
标题 "tp5.1消息队列 think-queue" 指的是使用ThinkPHP5.1框架集成的消息队列组件——think-queue。消息队列在软件开发中扮演着重要角色,它允许应用程序异步处理耗时任务,提高系统响应速度和整体性能。think-queue...
`Queue.java`可能是接口或者抽象类,定义了队列的基本操作,如`offer()`, `peek()`, `poll()`等,`ArrayQueue`和`Vector`可能是实现了这个接口的具体类。 总结来说,这两个实现都展示了如何在Java中构建队列数据...
《killbill-queue-0.2.8.zip》与《matrix-toolkits-java.zip》是两个不同的开源项目,它们在IT领域中各自扮演着重要的角色。让我们分别来探索这两个项目的详细内容。 首先,我们来看《killbill-queue-0.2.8.zip》。...
修复android-priority-jobqueue-2.0.1这个开源库cursor没关闭的BUG
在“jquery-ajaxQueue-master”压缩包中,通常会包含一个js文件,例如“jquery.ajaxQueue.js”,将其链接到HTML文件中。 3. 创建Ajax请求时,使用$.ajaxQueue()替代$.ajax()。例如: ```javascript $.ajaxQueue({ ...
Arduino-Arduino-Queue.h.zip,用于ARDUIO嵌入式项目的通用C 循环队列,Arduino是一家开源软硬件公司和制造商社区。Arduino始于21世纪初,深受电子制造商的欢迎,Arduino通过开源系统提供了很多灵活性。
离线安装包,亲测可用
第九周-第14章节-Python3.5-队列Queue.avi
《RabbitMQ Java客户端3.3.4详解》 RabbitMQ Java客户端是RabbitMQ消息中间件的一个重要组成部分,它允许Java开发者方便地与RabbitMQ服务器进行交互,实现消息的发布与消费。在“rabbitmq-java-client-bin-3.3.4”...
在本文中,我们将深入探讨如何在 Laravel 开发中利用 `laravel-sqs-fifo-queue` 实现对 Amazon Simple Queue Service (SQS) FIFO 队列的支持。首先,让我们理解一下 Laravel 框架、SQS 和 FIFO 队列的基本概念。 **...
在了解这个插件之前,我们先来认识一下Jellyfin。 Jellyfin是一款开源的媒体服务器软件,它允许用户管理和流式传输个人媒体库,包括电影、电视节目、音乐和图片等。Jellyfin兼容多种平台,如Windows、Linux、...