C# 队列(Queue)

这篇具有很好参考价值的文章主要介绍了C# 队列(Queue)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、概述

二、基本的用法

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();
        }
    }
}

运行

c# queue,C#,c#

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

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();
        }
    }
}

运行

c# queue,C#,c#

 

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();
        }
    }
}

运行

c# queue,C#,c#

 

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();
        }
    }
}

运行

c# queue,C#,c#

 

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();
        }
    }
}

运行

c# queue,C#,c#

 

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();
        }
    }
}

运行

c# queue,C#,c#

 

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文章来源地址https://www.toymoban.com/news/detail-529471.html

到了这里,关于C# 队列(Queue)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 消息队列(Message Queue)

    目录 一、概念 二、消息队列使用场景 1.应用解耦:将应用进行解耦 具体场景:用户下单后,订单系统需要通知库存系统 2.异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理,减少处理时间 具体场景:用户为了使用某个应用,进行注册,

    2024年02月21日
    浏览(39)
  • 【数据结构】队列-Queue

    ⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈数据结构 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 队列: 只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(FirstIn First Out) 入队列:

    2024年02月08日
    浏览(33)
  • 【C++】队列(queue)的使用

    C++ 中, std::queue 容器是一种 先进先出 (First In First Out, FIFO)的数据结构,且有两个出口。 队列(queue)的 结构 如下:类似于生活中的排队买票,最先排队的人位于队伍最前端,后来的人依次从队伍末尾加入队伍。当队首的人买票成功后离开,原先位于第二位的人顶上成为新的队

    2024年02月09日
    浏览(26)
  • 数据结构:队列Queue详解

    队列 :只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。进行插入操作的一端称为 队尾 ,删除操作的一端称 队头 。 入队列 :进行插入操作的一端称为 队尾 。 出队列 :进行删除操作的一端称为 队头 。 在 Java 中, Queue是个接口,底层是通过链表

    2024年02月11日
    浏览(28)
  • Queue 队列的实现与应用

    只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(FirstIn First Out) 入队列:进行插入操作的一端称为队尾(Tail/Rear) 出队列:进行删除操作的一端称为队(Head/Front), 队列可以通过数组和链表两种方式来实现。 队列的基本操作

    2024年02月07日
    浏览(26)
  • 【数据结构】 队列(Queue)与队列的模拟实现

    队列 :只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有==先进先出FIFO(FirstIn First Out) ==入队列: 进行插入操作的一端称为 队尾(Tail/Rear) 出队列: 进行删除操作的一端称为 队头(Head/Front) 在Java中, Queue是个接口,底层是通过链表实现

    2024年02月11日
    浏览(37)
  • leetcode分类刷题:队列(Queue)(一、单调队列)

    单调队列,看起来是与单调栈对应起来的一样;但是做题的时候感觉单调队列不像单调栈一样,能根据题意自然形成 单调队列的基本实现 ,感觉单调队列更像是和某个队列对应起来的一样 1、 单调队列的经典题型 :使用双向队列维护窗口,窗口移动的元素增删与队列的先进

    2024年02月09日
    浏览(30)
  • RabbitMQ(Message Queue消息队列)

    当消息发送者发送消息以后,将由消息代理接管,消息代理保证消息传递到指定目的地。 队列(queue):点对点消息通信(point-to-point) 主题(topic):发布(publish)/订阅(subscribe)消息通信 JMS(Java Message Service) AMQP(Advanced Message Queuing Protocol) 定义 Java api 网络线级协议

    2023年04月08日
    浏览(67)
  • RabbitMQ之Queue(队列)属性解读

    ​Queue(队列)是RabbitMQ的内部对象,用于存储消息队列,并将它们转发给消费者; ​  RabbitMQ中的Queue(队列)是消息的缓冲区,用于存储待处理的消息。它是RabbitMQ中最基本的消息传递模型。Queue具有以下特点:     队列是消息的容器:队列用于存储待处理的消息,消息按

    2024年03月09日
    浏览(29)
  • 彻底理解FreeRTOS中的队列(Queue)

    “队列”(Queue)提供了任务与任务之间通信的机制。在这样的场景:一个或多个其他的任务产生数据,主任务要依次处理数据,队列就显得非常有用了。 参考资料:《Mastering the FreeRTOS Real Time Kernel》-Chapter 4 Queue Management FreeRTOS全解析-5.队列(Queue) 目录 1.队列的特征 1.1数据存

    2024年02月03日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包