C# 中的队列

WBOY
发布: 2024-09-03 15:30:43
原创
735 人浏览过

队列是一个对象的集合,它以 FIFO(先进先出)的形式表示,先添加的元素先出现,在 C# 中,队列集合类存在于命名空间 System.Collection 中。队列以 FIFO 顺序存储元素,我们可以按照先进先出的方式访问元素。队列与堆栈集合正好相反,其中堆栈是 LIFO(后进先出)。 Queue 集合允许存在大量空值和重复值。队列使用两个方法,称为 Enqueue() 和 Dequeue(),分别用于添加和检索值。

语法:

队列是使用称为队列的数据类型创建的。这里“new”关键字用于创建队列的对象。在队列集合中,我们使用 Enqueue 方法添加项目,使用 Dequeue 方法删除项目。

Queue QueueObject = new Queue() // creation of Queue
登录后复制
QueueObject.Enqueue(element) // to add element to Queue
登录后复制
QueueObject.Dequeue() //to remove element to Queue
登录后复制

C# 中的队列如何工作?

队列以 FIFO(先进先出)的形式出现,它是对象的集合,当我们需要以先进先出的方式访问项目时,会使用此过程。该队列是非通用的,它使用 System.Collections 命名空间中定义的集合类型。一般来说,当我们以队列集合中存储的方式使用信息时,队列很有用。

Queue 通过 IEnumerable、ICloneable、ICollection 接口实现。对于引用类型,它接受 null 有效值。在队列集合中,添加项目时,我们使用 Enqueue 方法;删除项目时,我们使用 Dequeue 方法。添加项目到队列时,总容量会自动增加所需的内存。

示例:

using System;
using System.Collections;
public class QueueProgram {
static public void Main()
{
// to create a queue - using Queue class
Queue _objQueue = new Queue();
// to add an elements in Queue - using Enqueue() method
_objQueue.Enqueue("DotNet");
_objQueue.Enqueue("SQL");
_objQueue.Enqueue("Java");
_objQueue.Enqueue("PHP");
_objQueue.Enqueue("Android");
Console.WriteLine("Working Process of Queue\n");
Console.WriteLine("Number of Elements Present in Object(_objQueue)   : {0}", _objQueue.Count);
// to obtain the topmost element of _objQueue - using Dequeue method
Console.WriteLine("\nTo Get the topmost element in Queue" + " is            : {0}", _objQueue.Dequeue());
Console.WriteLine("\nNumber of Elements Present in Object(_objQueue)   : {0}", _objQueue.Count);
// to obtain the topmost element of _objQueue - using Peek method
Console.WriteLine("\nTo Get the topmost element in Queue is            : {0}", _objQueue.Peek());
Console.WriteLine("\nNumber of Elements Present in Object(_objQueue)   : {0}", _objQueue.Count);
// to check hether the element is present in the Queue
if (_objQueue.Contains("SQL") == true)
{
Console.WriteLine("\nElement is Present !");
}
else
{
Console.WriteLine("\nElement is not Present !");
}
}
}
登录后复制

在上面的程序中,我们将Queue声明为_objQueue来保存Queue的项目。为了添加新元素,我们使用 Enqueue() 方法,为了删除元素,我们使用 Dequeue() 方法。 Count属性用于获取队列中元素的总数,该属性的返回值是一个数字。另一个方法 Contains() 用于检查给定值/元素是否存在,它返回 bool 值 true 或 false。 Peek() 用于获取队列集合中最上面的值。

输出:

C# 中的队列

从上面的输出来看,显示了 Queue 的项目。首先,它使用 Count() 方法显示队列中存在的元素总数,然后使用 Peek() 方法显示最上面的元素。通过使用 Contains() 方法,它检查队列集合中是否存在该元素。

构造函数

在 Queue 类中,它由用于创建队列的构造函数组成。

  • Queue():构造函数 Queue() 用于创建队列类的实例,它有助于使用默认增长因子。
  • Queue(ICollection): 此构造函数用于创建队列的实例,它包含从指定集合复制的项目,并且具有与复制的项目数量相同的容量。它还使用默认的初始生长因子。
  • Queue(Int32):此构造函数用于创建一个空的 Queue 类实例,该实例指定了初始容量,并使用默认的增长因子。
  • Queue(Int32, Single):此构造函数用于创建一个空的 Queue 类实例,该实例指定了初始容量,并使用默认的增长因子。

C# 方法中的队列函数

让我们看看以下函数列表,其中是 Queue 类的常用方法 -

  • Enqueue():Enqueue方法用于在Queue中添加元素时使用,它是一个非泛型集合,因此我们可以在该方法中添加任何数据类型的元素。该方法使用的签名是 void Enqueue(object obj)
  • Dequeue():Dequeue 方法用于访问队列,用于检索队列中最顶层的元素。通过用于删除队列的 FIFO 方法 Dequeue 及其返回队列集合中的第一个元素的结果,仅当队列的总计数始终大于零时才调用 Dequeue(),否则会引发异常。该方法使用的签名是 object Dequeue()
  • Peek(): 此方法将始终返回队列集合中的第一个元素,而不从队列中删除。如果调用空队列集合,它会抛出异常。
  • 该方法使用的签名是object Peek()。
  • Clear():该方法用于从队列集合中删除对象。该方法使用的签名是 void Clear()。
  • Contains():该方法用于检查Queue集合中是否存在某个元素。该方法使用的签名是 bool Contains(object obj).
  • Clone():Clone() 方法用于创建队列集合的浅表副本。
  • Equals(Object):此方法用于检查特定对象是否等于当前对象。
  • 同步(队列):此方法返回一个包含原始队列的新队列。
  • TrimToSize(): 该方法用于设置队列集合中实际项目数的容量。

结论

在这篇文章中,我们了解了C#中Queue()的用法,它基于先进先出的概念,我们分别使用Enqueue()和Dequeue()方法来添加和删除队列。

以上是C# 中的队列的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板