猿教程 Logo

C# 队列(Queue)

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效:去购买

C#在System.Collection命名空间中包括一个Queue集合类。 队列以FIFO格式(先入先出)存储元素,与Stack集合完全相反。 它按照添加的顺序包含元素。

队列集合允许多个空值和重复值。 使用Enqueue()方法添加值,使用Dequeue()方法从队列中检索值。



C#队列的重要属性和方法

属性描述
Count返回队列中元素的总数。


方法描述
Enqueue将项目添加到队列中。
Dequeue从队列的开头删除并返回项目。
Peek从队列中返回第一个项目
Contains检查项目是否在队列中
Clear从队列中删除所有项目。
TrimToSize将队列的容量设置为队列中实际项目数。

向队列添加元素

队列是非泛型集合。 因此,您可以使用Enqueue()方法将任何数据类型的元素添加到队列中。

Enqueue()签名:void Enqueue(object obj)

Enqueue()实例:

Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue("Four");

访问队列

Dequeue()方法用于检索队列集合中最顶层的元素。 Dequeue()从队列中删除并返回第一个元素,因为队列以FIFO顺序存储元素。 对空队列调用Dequeue()方法将抛出InvalidOperation异常。 因此,在调用队列上的Dequeue()方法之前,请检查队列的总计是否大于零。

Dequeue()方法签名:object Dequeue()

Dequeue案例:

Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue("Four");
Console.WriteLine("Number of elements in the Queue: {0}", queue.Count);
while (queue.Count > 0)
Console.WriteLine(queue.Dequeue());
Console.WriteLine("Number of elements in the Queue: {0}", queue.Count);

运行结果:

Number of elements in the Queue: 4
3
2
1
Four
Number of elements in the Queue: 0

Peek()

Peek()方法总是从队列集合返回第一个项目,而不从队列中删除它。 对空队列集合调用Peek()和Dequeue()方法将抛出运行时异常“InvalidOperationException”。

Peek()方法签名:object Peek();

Peek()实例:

Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue("Four");
Console.WriteLine("Number of elements in the Queue: {0}", queue.Count);
Console.WriteLine(queue.Peek());
Console.WriteLine(queue.Peek());
Console.WriteLine(queue.Peek());
Console.WriteLine("Number of elements in the Queue: {0}", queue.Count);

运行结果:

Number of elements in the Queue: 4
3
3
3
Number of elements in the Queue: 4

您可以通过将队列转换为数组来迭代队列,而不删除它的元素,如下所示:

Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue("Four");
Console.WriteLine("Number of elements in Queue: {0}", queue.Count);
foreach (var i in queue.ToArray())
Console.WriteLine(i);
Console.WriteLine("Number of elements in Queue: {0}", queue.Count);

运行结果:

Number of elements in Queue: 4
3
2
1
Four
Number of elements in Queue: 4

Contains:

Contains()方法检查队列中是否存在项目。 如果指定的项目存在,则返回true; 否则返回false。

Contains()签名:bool Contains(object obj);

Contains案例:

Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue("Four");
queue.Contains(2); // true
queue.Contains(100); //false

Clear():

Clear()方法从队列中删除所有项目。

Clear()签名:void Clear();

Clear()实例:

Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue("Four");
Console.WriteLine("Number of elements in the Queue: {0}", queue.Count);
queue.Clear();
Console.WriteLine("Number of elements in the Queue: {0}", queue.Count);

运行结果:

Number of elements in the Queue: 4
Number of elements in the Queue: 0


有关队列成员的更多信息,请访问MSDN。

要点
  1. 队列以FIFO(先入先出)样式存储值。 首先添加的元素将首先出现。

  2. 使用Enqueue()方法将元素添加到队列

  3. Dequeue()方法从队列的开头返回和删除元素。 对空队列调用Dequeue()方法将抛出异常。

  4. Peek()方法总是返回最顶层的元素。

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效: 去购买


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/CSharp/Csharp-queue.html