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)
https://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日
相关文章:
C#队列(Queue)的基本使用
概述 在编程中,队列(Queue)是一种常见的数据结构,它遵循FIFO(先进先出)的原则。在C#中,.NET Framework提供了Queue<T>类,它位于System.Collections.Generic命名空间下&#x…...
预训练模型介绍
一、什么是GPT GPT 是由人工智能研究实验室 OpenAI 在2022年11月30日发布的全新聊天机器人模型, 一款人工智能技术驱动的自然语言处理工具 它能够通过学习和理解人类的语言来进行对话, 还能根据聊天的上下文进行互动,能完成撰写邮件、视频脚本、文案、翻译、代码等任务 二、 为…...
Pandas入门篇(三)-------数据可视化篇3(seaborn篇)(pandas完结撒花!!!)
目录 概述一、语法二、常用单变量绘图1. 直方图(histplot)2. 核密度预估图(kdeplot)3. 计数柱状图(countplot) 三、常用多变量绘图1.散点图(1) scatterplot(2)regplot 散点图拟合回归线(3)jointplot 散点图…...
SpringBoot中阿里OSS简单使用
官方文档:Java跨域设置实现跨域访问_对象存储(OSS)-阿里云帮助中心 1.pom中引入依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version> </dependency> 如…...
websocket简介
服务端推送消息给浏览器 WebSocket 教程 - 阮一峰的网络日志...
Linux的shell外壳
Shell外壳 在计算机领域,“shell”(外壳)是指一种用户界面,提供了访问操作系统服务的方式。Shell 是用户与操作系统之间的桥梁,它解释并执行用户输入的命令。 Shell 的主要功能包括: 命令解释:…...
支付宝支付流程
第一步前端:点击去结算,前端将商品的信息传递给后端,后端返回一个商品的订单号给到前端,前端将商品的订单号进行存储。 对应的前端代码:然后再跳转到支付页面 // 第一步 点击去结算 然后生成一个订单号 // 将选中的商…...
打招呼得不到回复,跟头像还有关系?
现在很多人有个想法,那就是觉得某些公司是不是为了某些目的才往出发的招聘信息啊,其实他们并不需要招聘新员工。 目录 已读不回? 头像很重要 选择自己的精修照片 已读不回? 很有这种可能,但你细心观察会发现,的确有很多大公司,...
【网络原理】HTTPS 的工作过程
系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序(万字博文) 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制(CRC算法、MD5算法) 【网络…...
Python语言在地球科学中地理、气象、气候变化、水文、生态、传感器等数据可视化到常见数据分析方法的使用
Python是功能强大、免费、开源,实现面向对象的编程语言,Python能够运行在Linux、Windows、Macintosh、AIX操作系统上及不同平台(x86和arm),Python简洁的语法和对动态输入的支持,再加上解释性语言的本质&…...
【JVM】class文件格式,JVM加载class文件流程,JVM运行时内存区域,对象分配内存流程
这篇文章本来只是想讲一下class文件格式,讲着讲着越讲越多。JVM这一块吧,知识比较散比较多,如果深研究下去如死扣《深入理解Java虚拟机》,这本书很深很细,全记住是不可能的,其实也没必要。趁这个机会直接把…...
GPU系列(六)-NVIDIA GPU 驱动安装
1. 安装驱动 1.1 查看系统是否识别显卡 lspci | grep -i vga03:00.0 VGA compatible controller: NVIDIA Corporation GP102 [TITAN X] (rev a1) 0a:00.0 VGA compatible controller: Matrox Electronics Systems Ltd. G200eR2 (rev 01) 识别出显卡为 NVIDIA 的 TITAN X。 …...
第十五届蓝桥杯总结
因为本人不是计院的,以后可能也不会打算法类的竞赛了,故作此总结,纪念我四个月的算法学习经历,还算是对算法有了一定的基础,碰运气拿下了湖北b组省二,个人感觉比赛题目没有第十四届难,感觉就是纯…...
Linux驱动开发——(八)Linux异步通知
目录 一、异步通知简介 二、信号处理 2.1 驱动程序中的处理 2.1.1 fasync_struct结构体 2.1.2 fasync操作函数 2.1.3 kill_fasync函数 2.2 应用程序中的处理 三、驱动代码 一、异步通知简介 异步通知的核心就是信号。信号类似于硬件上使用的中断,只不过信号…...
Docker知识点汇总表格总结
Docker容器给我的一个很直观的感受就是将项目以及中间件安装变得比较简单直接,运行维护起来也更方便。之前做的一些微服务项目也是用docker来部署,现在很多开源的项目也流行使用docker来部署,简化了很多手动安装和配置的步骤,将项…...
Golang中实现调用Windows API向指定目标发送ARP请求
简介 Go库中很多实现的arp都是支持osx/linux/bsd之类的, 但几乎没有支持windows的, 也试了一些方式, 目前还是选用调用windows的API, 记录一下这一次windows的API的调用经验。 实现 代码 package main/* #cgo CFLAGS: -I. #cgo …...
这是一个简单的照明材料网站,后续还会更新
1、首页效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>爱德照明网站首页</title><style>/*外部样式*/charset "utf-8";*{margin: 0;padding: 0;box-sizing: border-box;}a{text-dec…...
【设计模式】之模板方法模式
系列文章目录 【设计模式】之策略模式 【设计模式】之责任链模式 文章目录 系列文章目录 前言 一、什么是模板方法模式 定义 角色 二、为什么要使用模板方法模式 优点 缺点 三、案例 普通案例 模拟Servlet过程案例 总结 前言 今天给大家介绍23种设计模式中的模板方法模式&a…...
【系统架构师】-选择题(十一)
1、紧耦合多机系统一般通过(共享内存)实现多机间的通信。对称多处理器结构(SMP)属于( 紧耦合)系统。 松耦合多机系统又称间接耦合系统,—般是通过通道或通信线路实现计算机间的互连。 2、采用微内核的OS结构…...
前端开发攻略---介绍HTML中的<dialog>标签,浏览器的原生弹框。
1、演示 2、介绍 <dialog> 标签用于定义对话框,即一个独立的窗口,通常用来显示对话框、提示框、确认框等弹出式内容。在对话框中,可以包含文本、表单元素、按钮等内容,用户可以和这些内容进行交互。 3、兼容性 4、示例代码 …...
通过curl命令快速测试Taotoken的ChatGPT接口是否通畅
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过curl命令快速测试Taotoken的ChatGPT接口是否通畅 对于开发者而言,在集成大模型API时,一个快速、直接的…...
AI 编程能力实战基准测试报告:编程能力评估体系 (Programming Capability Benchmark)
🤖 AI 编程能力实战基准测试报告:编程能力评估体系 (Programming Capability Benchmark) 文件目标: 一份用于评估当前顶级生成式模型(如GPT-5.5, Claude 4.7, Deepseek V4等)实际软件开发能力和系统级思维的权威指南。 核心原则: …...
MXFP混合精度注意力机制优化LLM推理性能
1. 低比特MXFP混合精度注意力机制解析在大型语言模型(LLM)推理过程中,自注意力机制的计算开销一直是主要瓶颈。传统FP16/BF16精度计算虽然能保证模型质量,但存在显著的内存带宽浪费和计算资源利用率不足问题。MXFP(Microscaling Floating-Poi…...
2026山东大学软件学院项目实训(六)
一、基本信息组号:69组员:李重昊负责模块:AI 工作流 —— 图片收集节点二、任务概述在 LangGraph4j 工作流中完成图片收集节点开发,根据用户自然语言需求自动规划并收集网站所需图片,为后续提示词增强与代码生成提供素…...
Obsidian Quiz Generator:用AI与间隔重复打造动态知识库
1. 项目概述:当笔记遇上主动回忆如果你和我一样,是 Obsidian 的用户,并且对知识管理、学习效率有追求,那么你一定遇到过这个困境:笔记越记越多,知识库越来越庞大,但真正能“记住”并“调用”的知…...
ARM中断控制器架构与配置实践详解
1. ARM中断控制器架构解析在嵌入式系统设计中,中断控制器作为处理器与外围设备间的关键枢纽,其性能直接影响系统的实时性和可靠性。ARM1176JZF-S处理器采用了两级中断控制架构:位于开发芯片中的TrustZone中断控制器(TZIC)和通用中断控制器(GI…...
GlosSI系统级Steam控制器:打破平台限制的终极解决方案
GlosSI系统级Steam控制器:打破平台限制的终极解决方案 【免费下载链接】GlosSI Tool for using Steam-Input controller rebinding at a system level alongside a global overlay 项目地址: https://gitcode.com/gh_mirrors/gl/GlosSI GlosSI(Gl…...
构建个人效率工具集:模块化Shell环境配置与自动化工作流实践
1. 项目概述与核心价值最近在整理个人技术栈和自动化工具时,发现了一个挺有意思的项目,叫“Tsai1030/Tsai_PIG”。乍一看这个仓库名,可能会让人有点摸不着头脑,PIG?和数据处理框架Apache Pig有关吗?还是某种…...
Android本地代理服务器droidproxy:原理、部署与流量分析实战
1. 项目概述与核心价值最近在折腾Android应用网络调试和流量分析时,发现了一个挺有意思的开源项目——anand-92/droidproxy。简单来说,这是一个运行在Android设备上的HTTP/HTTPS代理服务器。你可能觉得,代理工具不是满大街都是吗?…...
Git提交规范自动化:Husky与Commitlint提升团队协作效率
1. 项目概述:一个被低估的开发者效率神器 如果你和我一样,每天都要在终端里敲下几十次 git commit -m “fix: xxx” ,并且每次都要纠结于提交信息的格式、规范,甚至因为一个拼写错误而不得不重新修改提交,那么你一定…...
