队列用于示意对象的先进先出(FIFO)汇合。当你须要我的项目的先进先出拜访时应用。这是非通用类型的汇合,System.Collections命名空间。依据程序的须要, 它用于创立一直增长的动静汇合。在队列中, 你能够存储雷同类型和不同类型的元素。通常, 当你以与存储在汇合中雷同的形式拜访该信息时, 队列是有用的, 它是存储数据的长期存储。

下图阐明了Queue类的层次结构:

重要事项:

  • Queue类实现了IEnumerable, ICollection和可克隆接口。
  • 当你在列表中增加我的项目时, 该我的项目称为入队.
  • 当你删除我的项目时, 该我的项目称为出队.
  • 队列承受null作为援用类型的有效值。
  • 将元素增加到队列后, 将通过重新分配外部数组来依据须要主动减少容量。
  • 在队列中, 容许你存储反复的元素。
  • 队列的容量是队列能够包容的元素数。

如何创立队列?

队列类有四个构造函数用于创立队列的办法如下:

  • Queue():此构造函数用于创立Queue类的实例, 该实例为空并具备默认的初始容量, 并应用默认的增长因子。
  • Queue(ICollection):此构造函数用于创立Queue类的实例, 该实例蕴含从指定汇合中复制的元素, 具备与复制的元素数量雷同的初始容量, 并应用默认的增长因子。
  • Queue(Int32):此构造函数用于创立Queue类的实例, 该实例为空并具备指定的初始容量, 并应用默认的增长因子。
  • Queue(Int32, Single):此构造函数用于创立Queue类的实例, 该实例为空并具备指定的初始容量, 并应用指定的增长因子。

让咱们看看如何应用Queue()构造函数创立一个队列:

第1步:包含零碎汇合借助using关键字在程序中命名空间。

语法如下:

using System.Collections;

第2步:应用Queue类创立一个队列, 如下所示:

Queue queue_name = new Queue();

第3步:如果要在队列中增加元素, 请应用入队在队列中增加元素的办法。如下例所示。

例子:

// C# program to illustrate queueusing System;using System.Collections;  public class GFG {     static public void Main()     {           // Create a queue         // Using Queue class         Queue my_queue = new Queue();           // Adding elements in Queue         // Using Enqueue() method         my_queue.Enqueue( "GFG" );         my_queue.Enqueue(1);         my_queue.Enqueue(100);         my_queue.Enqueue( null );         my_queue.Enqueue(2.4);         my_queue.Enqueue( "Geeks123" );           // Accessing the elements         // of my_queue Queue         // Using foreach loop         foreach ( var ele in my_queue)         {             Console.WriteLine(ele);         }     }}

输入如下:

GFG11002.4Geeks123

如何从队列中删除元素?

在队列中, 容许你从队列中删除元素。 Queue类提供了两种不同的办法来删除元素, 这些办法是:

Clear:此办法用于从队列中删除对象。

Enqueue:此办法删除队列的开始元素。

例子:

// C# program to illustrate how// to remove elements from queueusing System;using System.Collections;  public class GFG {     static public void Main()     {           // Create a queue         // Using Queue class         Queue my_queue = new Queue();           // Adding elements in Queue         // Using Enqueue() method         my_queue.Enqueue( "GFG" );         my_queue.Enqueue(1);         my_queue.Enqueue(100);         my_queue.Enqueue(2.4);         my_queue.Enqueue( "Geeks123" );           Console.WriteLine( "Total elements present in my_queue: {0}" , my_queue.Count);         my_queue.Dequeue();           // After Dequeue method         Console.WriteLine( "Total elements present in my_queue: {0}" , my_queue.Count);           // Remove all the elements from the queue         my_queue.Clear();           // After Clear method         Console.WriteLine( "Total elements present in my_queue: {0}" , my_queue.Count);     }}

输入如下:

Total elements present in my_queue: 5Total elements present in my_queue: 4Total elements present in my_queue: 0

如何取得队列的最高元素?

在Queue中, 你能够应用Queue类提供的以下办法轻松地找到队列的最上层元素:

Peek:此办法在队列开始处返回对象, 但不删除它。

Enqueue:此办法返回批改后的队列开始处的对象, 示意此办法删除队列的最上层元素。

例子:

// C# program to illustrate how// get topmost elements of the queueusing System;using System.Collections;  public class GFG {     static public void Main()     {           // Create a queue         // Using Queue class         Queue my_queue = new Queue();           // Adding elements in Queue         // Using Enqueue() method         my_queue.Enqueue( "GFG" );         my_queue.Enqueue( "Geeks" );         my_queue.Enqueue( "lsbin" );         my_queue.Enqueue( "geeks" );         my_queue.Enqueue( "Geeks123" );           Console.WriteLine( "Total elements present in my_queue: {0}" , my_queue.Count);           // Obtain the topmost element of my_queue         // Using Dequeue method         Console.WriteLine( "Topmost element of my_queue"                      + " is: {0}" , my_queue.Dequeue());                                      Console.WriteLine( "Total elements present in my_queue: {0}" , my_queue.Count);           // Obtain the topmost element of my_queue         // Using Peek method         Console.WriteLine( "Topmost element of my_queue is: {0}" , my_queue.Peek());           Console.WriteLine( "Total elements present in my_queue: {0}" , my_queue.Count);     }}

输入如下:

Total elements present in my_queue: 5Topmost element of my_queue is: GFGTotal elements present in my_queue: 4Topmost element of my_queue is: GeeksTotal elements present in my_queue: 4

如何查看队列中元素的可用性?

在Queue中, 能够应用Contain()办法查看给定元素是否存在。换句话说, 如果要搜寻给定队列中的元素, 请应用Contain()办法。

例子:

// C# program to illustrate how// to check element present in// the queue or notusing System;using System.Collections;  class GFG {       static public void Main()     {           // Create a queue         // Using Queue class         Queue my_queue = new Queue();           // Adding elements in Queue         // Using Enqueue() method         my_queue.Enqueue( "GFG" );         my_queue.Enqueue( "Geeks" );         my_queue.Enqueue( "lsbin" );         my_queue.Enqueue( "geeks" );         my_queue.Enqueue( "Geeks123" );           // Checking if the element is         // present in the Queue or not         if (my_queue.Contains( "lsbin" ) == true ) {             Console.WriteLine( "Element available...!!" );         }         else {             Console.WriteLine( "Element not available...!!" );         }     }}

输入如下:

Element available...!!

通用队列与非通用队列有什么区别?

通用队列非通用队列
通用队列在System.Collections.Generic命名空间下定义。非通用队列在System.Collections命名空间下定义。
通用队列只能存储雷同类型的元素。非通用队列能够存储雷同类型或不同类型的元素。
须要定义队列中元素的类型。无需定义队列中元素的类型。
这是类型平安的。它不是类型平安的。

更多C#开发相干内容请参考:lsbin - IT开发技术:https://www.lsbin.com/

查看以下更多C#相干的内容:

  • C#泛型编程:https://www.lsbin.com/2911.html
  • C#变量用法指南:https://www.lsbin.com/1916.html
  • C# ValueTuple:https://www.lsbin.com/1129.html