C#队列(Queue)的基本使用

概述

在编程中,队列(Queue)是一种常见的数据结构,它遵循FIFO(先进先出)的原则。在C#中,.NET Framework提供了Queue<T>类,它位于System.Collections.Generic命名空间下,用于实现泛型队列。本文将全面介绍C#中Queue<T>的基本使用方法,帮助大家快速掌握这一实用工具。

创建队列

在C#中使用队列非常简单。首先,你需要引入必要的命名空间,然后实例化一个Queue<T>对象。这里的T代表队列中元素的类型。

using System;
using System.Collections.Generic;class Program
{static void Main(){// 创建一个整型的队列Queue<int> intQueue = new Queue<int>();// ... 后续操作}
}

入队(Enqueue)

向队列中添加元素的操作被称为“入队”。你可以使用Enqueue方法将元素添加到队列的尾部。

// 向整型队列中添加元素
intQueue.Enqueue(10);
intQueue.Enqueue(20);
intQueue.Enqueue(30);

出队(Dequeue)

从队列中移除元素的操作被称为“出队”。你可以使用Dequeue方法来移除并返回队列头部的元素。

// 从整型队列中移除元素,并获取该元素的值
int firstElement = intQueue.Dequeue(); // 这将返回10,并把它从队列中移除
Console.WriteLine(firstElement); // 输出:10

查看队列头(Peek)和队列长度(Count)

如果你想查看队列头部的元素但不移除它,你可以使用Peek方法。此外,你还可以使用Count属性来获取队列中当前元素的数量。

// 查看整型队列头部的元素,但不移除它
int peekElement = intQueue.Peek(); // 这将返回20,但不会把它从队列中移除
Console.WriteLine(peekElement); // 输出:20// 获取队列中元素的数量
int count = intQueue.Count; // 这将返回队列中剩余的元素数量,例如2(如果之前已经Dequeue过一个元素)
Console.WriteLine(count); // 输出队列中的元素个数

遍历队列

你可以使用foreach循环来遍历队列中的所有元素。

// 遍历整型队列中的所有元素并打印它们
foreach (int number in intQueue)
{Console.WriteLine(number); // 输出队列中的每个元素,例如:20, 30(如果之前已经Dequeue过一个元素)
}

清空队列(Clear)

如果你想清空整个队列,可以使用Clear方法。

// 清空整型队列中的所有元素
intQueue.Clear(); // 队列现在为空

是否包含元素(Contains)和查找元素(IndexOf)

你可以使用Contains方法来检查队列中是否包含某个特定元素,使用IndexOf来查找元素在队列中的位置(索引)。

// 检查整型队列中是否包含某个元素,例如20
bool containsElement = intQueue.Contains(20); // 如果之前队列中包含20,则返回true;否则返回false
Console.WriteLine(containsElement); // 输出检查结果// 查找整型队列中元素30的索引位置(如果存在的话)
int indexOfElement = intQueue.IndexOf(30); // 如果队列中包含30,则返回其索引;否则返回-1
Console.WriteLine(indexOfElement); // 输出元素的索引或-1

通过掌握这些基本操作,你现在应该能够在C#中熟练地使用Queue<T>类了。队列作为一种高效的数据结构,在处理需要按照特定顺序处理的项目时非常有用,如打印任务队列、线程工作队列等场景。希望本文能帮助你更好地理解和应用C#中的队列。

参考链接

C#队列(Queue)的基本使用,一文全掌握 (qq.com)icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=Mzg3ODAxNzM5OQ==&mid=2247501717&idx=2&sn=26e5bc280110555555f43e169a63f517&chksm=cf18a98df86f209bf4128e43a0f7f54c8433c231a91638a25aecac0f6f6813c113949976278e&mpshare=1&scene=1&srcid=0428QvrI6AAz2dxp7t4INz50&sharer_shareinfo=c96a5ef26b778b9a4cf3ac63369aad81&sharer_shareinfo_first=83610a120da8e36efbb6ca0d66e802d4#rd

特此记录

anlog

2024年4月28日

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

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

相关文章

【深度学习实战(26)】标签处理之语义分割标签转换,数据集划分

一、标签转换 我们在使用labeme标签工具&#xff0c;标注完数据后会获得json文件。在标注结束过后&#xff0c;我们需要通过标签转换操作&#xff0c;生成jpg格式原始图片和png格式mask标签图。 1.1 使用img_b64_to_arr将json标签中二进制图像数据变成numpy格式数据&#xf…

介绍一个小技巧-Luhn算法

这种算法主要用于验证身份识别码的正确性&#xff0c;比如信用卡号、发卡行识别码、国际移动设备识别码&#xff08;IMEI&#xff09;、美国国家提供商标识号码以及电子票的票号验证等。是由IBM科学家Hans Peter Luhn于1954年发明的一种简单校验和算法。在工业自动化领域也有使…

selenium在Pycharm中结合python的基本使用、交互、无界面访问

下载 下载与浏览器匹配的浏览器驱动文件&#xff0c;这里一定注意的是&#xff0c;要选择和浏览器版本号相同的驱动程序&#xff0c;否则后面会有很多问题。 &#xff08;1&#xff09;浏览器&#xff08;以google为例&#xff09;版本号的查询&#xff1a; 我这里的版本号是1…

java实现模板填充word,word转pdf,pdf转图片

Java实现Word转PDF及PDF转图片 在日常开发中&#xff0c;我们经常需要将文件操作&#xff0c;比如&#xff1a; 根据模板填充wordword文档中插入图片Word文档转换为PDF格式将PDF文件转换为图片。 这些转换可以帮助我们在不同的场景下展示或处理文档内容。下面&#xff0c;我将…

回归(Regression)

回归&#xff08;Regression&#xff09;在统计学和机器学习中是一种预测建模技术&#xff0c;它研究的是因变量&#xff08;目标变量&#xff09;和自变量&#xff08;特征&#xff09;之间的关系。回归分析的目的是建立一个数学模型&#xff0c;这个模型能够基于一个或多个自…

Leetcode—1256. 加密数字【中等】Plus(bitset、find_first_not_of、erase)

2024每日刷题&#xff08;120&#xff09; Leetcode—1256. 加密数字 实现代码 class Solution { public:string encode(int num) {string ans;num 1;while(num ! 0) {ans to_string(num & 1);num num >> 1;}if(ans.empty()) {return "";} else {stri…

coreldraw2024精简版绿色版安装包免费下载

CorelDRAW 2024是一款矢量图形设计软件&#xff0c;于2024年3月5日正式在全球范围内发布。这款软件在多个方面进行了更新和改进&#xff0c;为用户提供了更多高效、灵活和便捷的设计工具。 首先&#xff0c;CorelDRAW 2024新增了绘画笔刷功能&#xff0c;这些笔刷不仅模拟了传…

Ubuntu20.04 [Ros Noetic]版本——在catkin_make编译时出现报错的解决方案

今天在新的笔记本电脑上进行catkin_make的编译过程中遇到了报错&#xff0c;这个报错在之前也遇到过&#xff0c;但是&#xff0c;我却忘了怎么解决。很是头痛&#xff01; 经过多篇博客的查询&#xff0c;特此解决了这个编译报错的问题&#xff0c;于此特地记录&#xff01;&…

深入探索Android Service:多线程环境最佳实践与系统级操作

引言 Service作为Android平台的基石之一&#xff0c;其在多线程环境下的高级应用以及跨应用通信的能力&#xff0c;为开发者提供了构建高性能、高稳定性应用的可能。本文将深入探讨Service在多线程环境下的最佳实践&#xff0c;以及Service 与系统级操作、Service与系统资源管…

day17面向对象三大特征—封装

回顾 1.对象:一个拥有属性和方法的实例:实体 2类名 ;大骆驼峰 class 类名: 类代码 class People: 类属性 (类属性:所有的对象共有的属性) name = 一类人 def __init__(self, name, age, sex): self : 对象本身 self.name 拿到属性值 self…

SpringCloud和SpringBoot技术选型

Spring Cloud和Spring Boot在技术选型上各自具有独特的特点和优势&#xff0c;它们在不同的场景和需求下发挥着不同的作用。 Spring Boot是一个快速开发框架&#xff0c;它简化了传统MVC的XML配置&#xff0c;使得配置变得更加方便、简洁。通过采用“约定优于配置”的理念&…

【已解决】c++如何在MFC框架中按下某键触发触发事件

本博文源于昨天处理的一个事件&#xff0c;接收到回车键进行检测&#xff0c;同样的这个也可以接收其他键&#xff0c;比如A 键B键之类的。这里可以在mfc框架中使用这个函数 BOOL ****::PreTranslateMessage(MSG* pMsg);该函数会在程序运行时不停地被调用只需要你用if去拦截它…

[论文笔记]SEARCHING FOR ACTIVATION FUNCTIONS

引言 今天带来另一篇激活函数论文SEARCHING FOR ACTIVATION FUNCTIONS的笔记。 作者利用自动搜索技术来发现新的激活函数。通过结合详尽的搜索和基于强化学习的搜索&#xff0c;通过实验发现最佳的激活函数 f ( x ) x ⋅ sigmoid ( β x ) f(x) x \cdot \text{sigmoid}(βx…

Unity DOTS中的baking(五)prefabs

Unity DOTS中的baking&#xff08;五&#xff09;prefabs 在DOTS的baking过程中&#xff0c;prefabs会被烘焙成entity prefabs。entity prefabs也是一个entity&#xff0c;可以在运行时实例化&#xff0c;就像是prefab一样。我们可以使用EntityPrefabReference这个struct&#…

瓦片编辑器成功移植到小熊猫C++ 2.25.1版本,解决_findnext移植问题

移植之后出现绿色屏幕闪退 查了版本回滚直到不闪退&#xff0c;发现是在读取自定义文件上出问题 然后在找读取自定义文件函数&#xff0c;发现是读取图片部分出问题 然后就卡住了 调试半天&#xff0c;不是数据溢出&#xff0c;于是就看 函数_findnext,网上搜 ———_findn…

Java项目启动检测 Redis 是否启动,未启动则启动(macOS 版本)

文章目录 一、概述二、代码 一、概述 启动项目时&#xff0c;检测macos 上 Redis 是否启动&#xff0c;未启动&#xff0c;则启动。 二、代码 /*** 用途: 项目启动时检查 redis&#xff0c;未启动则启动&#xff08;开发环境&#xff09;** author: ADAM* create: 2024/04/2…

4.Docker本地镜像发布至阿里云仓库、私有仓库、DockerHub

文章目录 0、镜像的生成方法1、本地镜像发布到阿里云仓库2、本地镜像发布到私有仓库3、本地镜像发布到Docker Hub仓库 Docker仓库是集中存放镜像的地方&#xff0c;分为公共仓库和私有仓库。 注册服务器是存放仓库的具体服务器&#xff0c;一个注册服务器上可以有多个仓库&…

项目开发规范

Restful REST&#xff0c;表述性状态转换&#xff0c;他是一种软件架构风格 使用URL定位资源&#xff0c;HTTP动词描述操作 根据发出请求类型来区分操作 GET&#xff1a; 查询id为1的用户POST&#xff1a;新增用户PUT&#xff1a;修改用户DELETE&#xff1a;删除id为1的用户 …

springboot权限验证学习-上

创建maven项目 创建父工程 这类项目和原来项目的区别在于&#xff0c;打包方式是pom 由于pom项目一般都是用来做父项目的&#xff0c;所以该项目的src文件夹可以删除掉。 创建子工程 子工程pom.xml 父工程pom.xml 添加依赖 父工程导入依赖包 <!--导入springboot 父工程…

18.Nacos配置管理-微服务读取Nacos中的配置

需要解决的问题 1.实现配置更改热更新&#xff0c;而不是改动了配置文件还要去重启服务才能生效。 2.对多个微服务的配置文件统一集中管理。而不是需要对每个微服务逐一去修改配置文件&#xff0c;特别是公共通用的配置。 配置管理服务中的配置发生改变后&#xff0c;回去立…