C# 队列(Queue)

news2024/11/28 2:44:58

目录

一、概述

二、基本的用法

1.添加元素

2.取出元素

1)Dequeue 方法

2)Peek 方法

3.判断元素是否存在

4.获取队列的长度

5.遍历队列

6.清空容器

7.Queue 泛型类

三、结束


一、概述

表示对象的先进先出集合。

队列和其他的数据结构一样,是一种存储容器,它遵循先进先出的原则,能够存储任意类型,但并不能获取到指定的位置,只能存入和取出,取出元素后,Queue 内部的元素自动删除,其实 队列 和 栈 使用方法大致差不多,只是取出数据的顺序不一样。

官方文档参考:Queue 类 (System.Collections) | Microsoft Learn

二、基本的用法

1.添加元素

添加元素使用 Enqueue 方法

using System;
using System.Collections;
using System.Collections.Generic;

namespace Queue_Test
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Queue queue = new Queue();
            queue.Enqueue(1);
            queue.Enqueue("你好");
            queue.Enqueue(true);
            queue.Enqueue(6.5);

            Console.ReadKey();
        }
    }
}

2.取出元素

1)Dequeue 方法

取出元素后,元素会自动从 Queue 中删除

using System;
using System.Collections;
using System.Collections.Generic;

namespace Queue_Test
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Queue queue = new Queue();
            queue.Enqueue(1);
            queue.Enqueue("你好");
            queue.Enqueue(true);
            queue.Enqueue(6.5);

            var value = queue.Dequeue();
            Console.WriteLine("value:" + value);
            Console.WriteLine("长度:" + queue.Count);

            Console.ReadKey();
        }
    }
}

运行

从执行的结果可以看到,最先存储的,最先被取出去。 

2)Peek 方法

读取最先添加的一个元素,读取后,元素不会从 Queue 中删除,但是只能读取一个元素

using System;
using System.Collections;
using System.Collections.Generic;

namespace Queue_Test
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Queue queue = new Queue();
            queue.Enqueue(1);
            queue.Enqueue("你好");
            queue.Enqueue(true);
            queue.Enqueue(6.5);

            var value = queue.Peek();
            Console.WriteLine("value:" + value);
            Console.WriteLine("长度:" + queue.Count);

            Console.ReadKey();
        }
    }
}

运行

 

3.判断元素是否存在

使用 Contains 来判断元素是否存在

using System;
using System.Collections;
using System.Collections.Generic;

namespace Queue_Test
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Queue queue = new Queue();
            queue.Enqueue(1);
            queue.Enqueue("你好");
            queue.Enqueue(true);
            queue.Enqueue(6.5);

            if(queue.Contains(1))
                Console.WriteLine("存在");
            else
                Console.WriteLine("不存在");

            Console.ReadKey();
        }
    }
}

运行

 

4.获取队列的长度

长度的获取和 List 一样,使用 Count 属性

using System;
using System.Collections;
using System.Collections.Generic;

namespace Queue_Test
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Queue queue = new Queue();
            queue.Enqueue(1);
            queue.Enqueue("你好");
            queue.Enqueue(true);
            queue.Enqueue(6.5);

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

            Console.ReadKey();
        }
    }
}

运行

 

5.遍历队列

可以使用 foreach 遍历队列,遍历并不会移除元素

using System;
using System.Collections;
using System.Collections.Generic;

namespace Queue_Test
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Queue queue = new Queue();
            queue.Enqueue(1);
            queue.Enqueue("你好");
            queue.Enqueue(true);
            queue.Enqueue(6.5);

            foreach (var item in queue)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("长度:" + queue.Count);

            Console.ReadKey();
        }
    }
}

运行

 

6.清空容器

使用 Clear 方法来清空队列

using System;
using System.Collections;
using System.Collections.Generic;

namespace Queue_Test
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Queue queue = new Queue();
            queue.Enqueue(1);
            queue.Enqueue("你好");
            queue.Enqueue(true);
            queue.Enqueue(6.5);

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

            Console.ReadKey();
        }
    }
}

运行

 

7.Queue 泛型类

queue 和 stack 一样,都有一个泛型类,作用也一样,就是用来存储固定类型的数据,在使用时,需要加上指定的类型,在使用这些数据时,就没必要对每个数据都去类型检测,使用起来也更加规范。

using System;
using System.Collections;
using System.Collections.Generic;

namespace Queue_Test
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Queue<string> queue = new Queue<string>();

            //向队列中添加元素
            queue.Enqueue("老一");
            queue.Enqueue("老二");
            queue.Enqueue("老三");

            //获取队列的数量
            int count = queue.Count;
            //队列中是否包含指定的 value
            bool b = queue.Contains("老王");

            //Peek方法是返回顶部的对象而不将其从堆栈中移除
            string names = queue.Peek();

            //获取队列中的元素
            //每次调用 Dequeue 方法,获取并移除队列中队首的元素
            string s1 = queue.Dequeue();
            Console.WriteLine(s1);
            string s2 = queue.Dequeue();
            Console.WriteLine(s2);
            string s3 = queue.Dequeue();
            Console.WriteLine(s3);

            //清空队列
            queue.Clear();

            Console.ReadKey();
        }
    }
}

三、结束

queue 和 stack  的特征和使用方法大致相同,主要特点:先进先出,存在装箱拆箱,存储任意类型,无法获取指定位置元素,只能取出最先存储的元素。

end

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

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

相关文章

Ros2中MoveItConfigsBuilder的功能作用说明

文章目录 前言MoveItConfigsBuilder的功能作用机器人resource文件样例总结 前言 在学习moveit2的样例时发现加载机器人配置参数多使用MoveItConfigsBuilder&#xff0c;它具体的功能和使用方法是什么呢。 这篇博文用来记录说明该函数的使用方法、作用和调用逻辑。 MoveItConfi…

Tomcat的讲解与安装

文章目录 前言一.Tomcat是什么二.Tomcat的原理三.Tomcat的安装和说明**1.下载****2.解压安装**bin目录conf目录lib目录log目录temp目录webapps目录work目录 3.配置环境变量 四.验证安装 前言 Tomcat 是一个 HTTP 服务器. 前面我们已经学习了 HTTP 协议, 知道了 HTTP 协议就是 …

共享电单车RFID停车技术分析

近段时间&#xff0c;某地主城区运营商信号基站受严重干扰&#xff0c;造成300多个基站&#xff0c;超过5万的用户受到影响。据无线电监测站的调查确认干扰源来自共享电单车&#xff0c;是共享电单车加装的RFID停车标签惹的祸&#xff0c;而该地区RFID终端选用的是超高频&#…

考研C语言复习第二章

考研C语言第二节课 2.1 #include <stdio.h> //符号常量 #define PI 32 int main() {int iPI*2;printf("i%d\n",i); // printf("Hello, World!\n");return 0; }在这里的define相当于一个替换的作用&#xff0c;是直接将PI是32整个搬到下面 所以…

M洞察|“MOBA”还是“MMO”?2023上半年热门手游大盘点来了,拯救你的游戏荒

2023年Q1中国移动游戏市场整体表现不及预期&#xff0c;实际销售收入为486.94亿元&#xff0c;同比下降19.42%。虽整体有所下滑&#xff0c;但新鲜血液依然迸发强劲。 3月22日&#xff0c;一款玩法轻松、新颖的种田类手游《桃源深处有人家》正式上线&#xff0c;玩家纷纷投入其…

AWVS使用手册 (全)

目录 000、什么是Acunetix Web Vulnarability Scanner 001、AWVS安装过程、主要文件介绍、界面简介、主要操作区域简介 002、AWVS的菜单栏、工具栏简介&#xff08;AWVS menus bar & tools bar&#xff09; 003&#xff1a;一次新的扫描的功能全面概述&#xff08;Scan…

基于SpringBoot的企业客户信息反馈平台的设计与实现

背景 企业客户信息反馈平台能够通过互联网得到广泛的、全面的宣传&#xff0c;让尽可能多的用户了解和熟知企业客户信息反馈平台的便捷高效&#xff0c;不仅为客户提供了服务&#xff0c;而且也推广了自己&#xff0c;让更多的客户了解自己。对于企业客户信息反馈而言&#xf…

vue3+element-plus+ts elplus table 实现表格动态列 表格列显示与隐藏的动态控制

工作接了个需求&#xff0c;需要实现表格的动态列&#xff0c;但是后端又不参与&#xff0c;全权交给前端&#xff0c;百度搜了一下&#xff0c;大多都是el-table-column的for循环&#xff0c;我觉得用起来不爽&#xff0c;还得改变el-table-column的书写方式&#xff0c;用对象…

软考A计划-2022年05月软件设计师下午真题及答案解析

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

【数据结构】——堆 堆的实现、堆排序、TopK问题

目录 什么是堆&#xff1f;堆的分类堆的实现堆排序——时间复杂度&#xff08;N*logN)TopK问题 什么是堆&#xff1f; 什么是堆&#xff1f; 堆是一种叫做完全二叉树的数据结构&#xff0c;分为大根堆和小堆&#xff0c;堆排序也是基于这种结构产生的。 堆是父亲节点和孩子节点…

爬虫-Webpack逆向实战 有习题

爬虫-Webpack逆向实战 我只要喝点果粒橙关注IP属地: 青海 0.1052022.04.30 19:21:46字数 4,875阅读 5,142 全文目录 webpack打包是前端js模块化压缩打包常用的手段&#xff0c;特征明显&#xff0c;比如下方的形式的代码就是webpack分发器 // 分发器 !function(x){function …

R语言混合效应(多水平/层次/嵌套)模型及贝叶斯实现技术

回归分析是科学研究中十分重要的数据分析工具。随着现代统计技术发展&#xff0c;回归分析方法得到了极大改进。混合效应模型&#xff08;Mixed effect model&#xff09;&#xff0c;即多水平模型&#xff08;Multilevel model&#xff09;/分层模型(Hierarchical Model)/嵌套…

linuxOPS基础_linux安装配置

Linux系统下载 Linux系统版本选择&#xff1a;CentOS7.6 x64&#xff0c;【镜像一般都是CentOS*.iso文件】 问题&#xff1a;为什么不选择最新版的8 版本&#xff1f; 7.x 目前依然是主流 7.x 的各种系统操作模式是基础 官网&#xff1a;https://www.centos.org/ &#xff0c;…

mysql8.0 修改密码

我使用的是 docker&#xff0c;但是这一期主要是讲解 mysql8 版本修改密码&#xff0c;我相信 linux、windows 和不使用 docker 应该都是可以的。 先说一下我的情况&#xff1a; 我在本地 windows 玩 docker 部署 mysql8.0.25 版本&#xff0c;无问题啦~ 然后我在 linux 里面玩…

模拟strcpy函数,assert,const修饰指针与凉皮男孩的故事

那么好了好了&#xff0c;宝子们&#xff0c;今天给大家介绍一下strcpy函数及其模拟&#xff0c;还有assert&#xff0c;const与凉皮男孩间的爱恨情仇&#xff0c;来吧&#xff0c;开始整活&#xff01;⛳️&#xff08;今天的内容和故事非常的有趣&#xff0c;希望大家一键三连…

黑马学生入职B站1年,晒出21K月薪:我想跳槽华为

现在的Z时代&#xff0c;嘴上说着不要&#xff0c;身体却很诚实。 前两天&#xff0c;黑马发布了《2022年度互联网平均薪资出炉&#xff01;高到离谱&#xff01;》&#xff0c;信息传输、软件和信息技术服务业薪资遥遥领先&#xff01;Z时代举头望着天花板&#xff0c;故作潇…

jsvmp逆向实战x-s、x-t算法还原

jsvmp逆向实战x-s、x-t算法还原 什么是jsvmp定位关键点log插桩日志分析代码还原 什么是jsvmp jsvmp就是将js源代码首先编译为自定义的字节码&#xff0c;只有对应的解释器才能执行这种字节码&#xff0c;这是一种前端代码虚拟化保护技术。 整体架构流程是服务器端通过对JavaS…

Sui基金会联合Tencent Cloud和Numen在香港举办的生态交流会圆满结束

5月24日&#xff0c;由Sui基金会、Tencent Cloud和Numen Cyber联合举办的Sui生态交流会在香港圆满结束。感谢Tencent Cloud为本次活动提供了场地支持。本次活动共吸引了60余名行业同仁线上和线下的参与。 本次活动旨在提升Web3产业对Sui生态的认识&#xff0c;并为生态中的开发…

调用华为API实现图像搜索

调用华为API实现图像搜索 1、作者介绍2、华为API介绍2.1 华为云图像搜索2.2 图像搜索应用场景2.2.1商品图片搜索2.2.2版权图片搜索 2.3 调用华为API实现图像标签 3、实验过程3.1完整代码3.2运行结果3.3常见错误 1、作者介绍 张勇进&#xff0c;男&#xff0c;西安工程大学电子…

通过Python的pdfplumber库将pdf转为图片

文章目录 前言一、pdfplumber库是什么&#xff1f;二、安装pdfplumber库三、查看pdfplumber库版本四、pdf素材五、将pdf转为图片1.引入库2.定义pdf路径3.打开PDF文件4.遍历每一页5.将PDF页面转换为Image对象6.将Image对象保存为图片文件7.效果 总结 前言 大家好&#xff0c;我是…