C#队列(Queue)及泛型类(Queue<T>)

队列实现先进先出,有装箱拆箱行为,可存放任意类型,但无法获取指定位置元素,只能取出最先存储的元素。
一、基本队列操作
1、向队列添加元素(Enqueue)

Queue queue = new Queue();
queue.Enqueue(1);
queue.Enqueue("道,可道,非常道。");
queue.Enqueue(1.21);
queue.Enqueue("白马非马。");queue.Enqueue(-5.68);
queue.Enqueue("事虽难,做则必成。");

2、获取队列长度(Count)

Console.WriteLine("队列长度:" + queue.Count);

3、队列遍历

if (queue != null && queue.Count > 0){foreach (var item in queue){Console.WriteLine(item);}
}

4、读取取出(Peek)

Console.WriteLine("队列读取取出");
var value = queue.Peek();
Console.WriteLine(value);

5、删除取出(Dequeue)

Console.WriteLine("队列删除取出");
var value1 = queue.Dequeue();
Console.WriteLine(value1);

6、判断元素是否存在(Contains)

Console.WriteLine("判断队列中元素是否存在");
if (queue.Contains(1.21)){Console.WriteLine("队列中存在1.21");}

7、清空队列(Clear)

Console.WriteLine("清空队列");
queue.Clear();

二、泛型类队列
1、示例

Queue<string> queue = new Queue<string>();queue.Enqueue("远上寒山石径斜");queue.Enqueue("白云深处有人家");queue.Enqueue("停车坐爱枫林晚");queue.Enqueue("霜叶红于二月花");int count = queue.Count;Console.WriteLine("队列元素数量:"+count);bool b = queue.Contains("老六");string res = b ? "队列中包括老六" : "队列中不包括老六";Console.WriteLine(res);Console.WriteLine("Peek测试");string p = queue.Peek();Console.WriteLine(p);Console.WriteLine("Dequeue测试");string d1 = queue.Dequeue();Console.WriteLine(d1);d1 = queue.Dequeue();Console.WriteLine(d1);Console.WriteLine("Clear测试");queue.Clear();Console.WriteLine(queue.Count);

2、运行结果
队列元素数量:4
队列中不包括老六
Peek测试
远上寒山石径斜
Dequeue测试
远上寒山石径斜
白云深处有人家
Clear测试
0
三、队列多线程操作
1、示例

static Queue<int> queueT = new Queue<int>();static readonly object objLock = new object();public const int THREAD_SUM = 5;public static void QueueTest(){queueT.Clear();for(int i = 0; i < 30; i++){queueT.Enqueue(i);}var factory=new TaskFactory();var tasks=new Task[THREAD_SUM];for(int i=0;i < THREAD_SUM; i++){Task task = tasks[i];task = factory.StartNew(() =>{Timer timer = new Timer((o) =>{if (IsAvailable){int q = Read();Console.WriteLine($"线程{task.Id}读取值:{q}");}}, null, 500, 1000);});}}public static int Read(){int res = 0;lock(objLock){if(IsAvailable){res=queueT.Dequeue();}return res;}}public static bool IsAvailable{get { return queueT.Count > 0; }}

2、运行结果

线程1读取值:0
线程3读取值:1
线程5读取值:2
线程4读取值:3
线程2读取值:4
线程3读取值:5
线程1读取值:6
线程4读取值:7
线程5读取值:8
线程2读取值:9
线程3读取值:10
线程1读取值:11
线程5读取值:12
线程4读取值:13
线程2读取值:14
线程3读取值:15
线程1读取值:16
线程5读取值:17
线程2读取值:19
线程4读取值:18
线程3读取值:23
线程5读取值:21
线程2读取值:22
线程1读取值:24
线程4读取值:20
线程5读取值:25
线程3读取值:28
线程1读取值:29
线程4读取值:26
线程2读取值:27

注意:线程号和数据的对应关系并不确定,但所有队列元素全部遍历到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/184563.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

升级openssh以及回滚,telnet远程链接

目录 安装telnet 编译安装openssl 解压并编译安装OpenSSH 修改配置允许root用户远程登录 测试没问题后开启防火墙关闭telnet 回滚办法&#xff08;如果没有备份的话&#xff09; 安装telnet 为了防止升级安装失败&#xff0c;无法使用ssh做远程连接&#xff0c;因此安装…

区间合并笔记

文章目录 什么是区间合并怎么做区间合并AcWing 803. 区间合并思路解析my - CODEdalao の CODE 什么是区间合并 区间合并是指给定多个区间&#xff0c;让你将重合的区间合并为一个区间 怎么做区间合并 区间合并类问题大多三个办法&#xff1a; 按左端点排序按右端点排序按左右…

企业微信ipad版,http协议接口发开,获取客户群列表

版本介绍&#xff1a; HTTP协议接口可以通过该接口实现企业微信的各种功能&#xff0c;使用HTTP协议可以避免使用hook形式的需要开启PC客户端的方式&#xff0c;同时可以实现三端同时在线&#xff0c;不影响PC和手机端的登录状态&#xff0c;调用简单&#xff0c;可以支持几千…

Apache Doris 整合 FLINK CDC 、Paimon 构建实时湖仓一体的联邦查询入门

1.概览 多源数据目录&#xff08;Multi-Catalog&#xff09;功能&#xff0c;旨在能够更方便对接外部数据目录&#xff0c;以增强Doris的数据湖分析和联邦数据查询能力。 在之前的 Doris 版本中&#xff0c;用户数据只有两个层级&#xff1a;Database 和 Table。当我们需要连…

一键删除方舟编译器缓存文件js、js.map插件ArkCompilerSupport

新手学习鸿蒙开发&#xff0c;发现DevEco Studio编译过种会生成js、js.map&#xff0c;在论坛上看了其它开发者也提了问题但无没解决&#xff0c;写了一个插件大家试下&#xff1a; https://plugins.jetbrains.com/plugin/23192-arkcompilersupport 源码&#xff1a;https://g…

js 如何实现转驼峰处理

目录 1&#xff0c;需求2&#xff0c;实现和原理3&#xff0c;原理1&#xff0c;正则2&#xff0c;替换函数 1&#xff0c;需求 在开发中&#xff0c;有时需要将中划线 -&#xff0c;下划线 _&#xff0c;冒号 : 这些连接符转为驼峰形式。 如果只有一个连接符&#xff0c;处理…

深度学习——Loss汇总

深度学习——Loss汇总 一、IOU Loss二、L1 Loss 一、IOU Loss 公式&#xff1a; 参考资料: 目标检测回归损失函数——IOU、GIOU、DIOU、CIOU、EIOU 二、L1 Loss 公式&#xff1a; 参考资料: PyTorch中的损失函数–L1Loss /L2Loss/SmoothL1Loss

Day72x.算法训练

739. 每日温度 class Solution {public int[] dailyTemperatures(int[] temperatures) {LinkedList<Integer> st new LinkedList<>();st.push(0);int[] res new int[temperatures.length];for (int i 1; i < temperatures.length; i) {while (!st.isEmpty()…

python机器学习——简单神经网络算法回归分析

利用python实现简单的神经网络算法回归分析 2023年亚太杯数学建模C题可以使用这个代码进行分析 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from tensorflow.keras.mod…

智慧城市大脑,运维无忧!

运维管理软件在智慧城市中发挥着重要的作用&#xff0c;可以提升IT资源管理效率、保障城市运营安全稳定、实现数据可视化与智能分析、优化资源配置与决策支持、促进智慧城市可持续发展。 在智慧城市中&#xff0c;运维管理软件的应用场景非常广泛。以下是其中几个具体应用场景…

Linux 网络配置

Linux 网络配置 #学习目标 1&#xff0c;掌握Linux中网络配置相关的文件。 2&#xff0c;掌握Linux中网络配置的相关参数。 3&#xff0c;掌握常用的网络配置命令。 4&#xff0c;管理Linux的常用网络服务。Linux系统下配置网络有两种方式&#xff1a; 在安装Linux系统的过程…

高并发架构设计方法:面对高并发,怎么对症下药?

Java全能学习面试指南&#xff1a;https://javaxiaobear.cn 我们知道&#xff0c;“高并发”是现在系统架构设计的核心关键词。一个架构师如果设计、开发的系统不支持高并发&#xff0c;那简直不好意思跟同行讨论。但事实上&#xff0c;在架构设计领域&#xff0c;高并发的历史…

DAPP开发【01】知识简介

系列文章目录 系列文章在DAPP开发专栏 文章目录 系列文章目录前言一、公/私钥是什么&#xff1f;二、区块浏览器三、用户和区块链交互1.infura 四、opensea 前言 DAPP&#xff0c;全称为Decentralized Application&#xff0c;即去中心化应用程序。它是一种基于区块链技术构建…

【C++】程序题( STL标准模板库)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

【element-plus使用】el-select自定义样式、下拉框选项过长等问题解决

1、自定义样式 <template><el-select v-model"value" style"width: 150px"><el-option label"选项一" value"option1"></el-option><el-option label"选项二" value"option2"><…

115. 不同的子序列

给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数&#xff0c;结果需要对 109 7 取模。 示例 1&#xff1a; 输入&#xff1a;s "rabbbit", t "rabbit" 输出&#xff1a;3 解释&#xff1a; 如下所示, 有 3 种可以从 s 中…

UG\NX二次开发 设置对象上属性的锁定状态UF_ATTR_set_user_attribute_lock_with_title_and_type

文章作者:里海 来源网站:里海NX二次开发3000例专栏 简介 设置对象上属性的锁定状态UF_ATTR_set_user_attribute_lock_with_title_and_type,用于代替旧版函数UF_ATTR_set_locked,使用旧版函数UF_ATTR_set_locked锁定属性请参照这篇文章《UG\NX二次开发 设置对象上属性的锁定…

PyMuPDF---Python处理PDF的宝藏库详解

1、PyMuPDF简介 1.1 介绍 在介绍PyMuPDF之前&#xff0c;先来了解一下MuPDF&#xff0c;从命名形式中就可以看出&#xff0c;PyMuPDF是MuPDF的Python接口形式。 MuPDF MuPDF 是一个轻量级的 PDF、XPS和电子书查看器。MuPDF 由软件库、命令行工具和各种平台的查看器组成。 …

【网络奇缘】- 计算机网络|分层结构|深入学习ISO模型

&#x1f308;个人主页: Aileen_0v0&#x1f525;系列专栏: 一见倾心,再见倾城 --- 计算机网络~&#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 回顾链接&#xff1a;http://t.csdnimg.cn/nRRzR 这篇文章是关于深入学习OSI模型七层结构&#xff0c; “书山…

【精选】Spring框架介绍及Spirng各个版本的特性

Spring框架介绍 Spring框架英文全称Spring Framework&#xff0c;是由Spring团队研发的模块化、轻量级开源框架。其主要目的是为了简化项目开发。在项目开发中&#xff0c;可以说没有刻意使用Spring&#xff0c;却处处有着Spring存在。用官网对Spring框架的介绍&#xff1a;Sp…