当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C# Queue用法及代码示例


队列代表一个first-in,先出对象集合。当您需要first-in、first-out访问项目时使用它。当您在列表中添加一个项目时,称为入队,当您删除一个项目时,称为出队。此类位于 System.Collections 命名空间下,并实现 ICollection、IEnumerable 和 ICloneable 接口。

队列类的特点:

  • 入队将一个元素添加到队列末尾。
  • 出队从队列开头删除最旧的元素。
  • 窥视返回位于队列开头的最旧元素,但不会将其从队列中删除。
  • 容量队列的数量是队列可以容纳的元素的数量。
  • 当元素添加到队列时,通过重新分配内部数组,容量会根据需要自动增加。
  • 队列接受空值作为引用类型的有效值并允许重复元素。

Constructors

构造函数 说明
Queue() 初始化 Queue 类的一个新实例,该实例为空、具有默认初始容量并使用默认增长因子。
Queue(ICollection) 初始化 Queue 类的新实例,该实例包含从指定集合复制的元素,具有与复制的元素数量相同的初始容量,并使用默认增长因子。
队列(Int32) 初始化 Queue 类的新实例,该实例为空、具有指定的初始容量并使用默认增长因子。
队列(Int32,单) 初始化 Queue 类的新实例,该实例为空、具有指定的初始容量并使用指定的增长因子。

例子:


// C# code to create a Queue 
using System; 
using System.Collections; 
  
class GFG { 
  
    // Driver code 
    public static void Main() 
    { 
  
        // Creating a Queue  
        Queue myQueue = new Queue(); 
  
        // Inserting the elements into the Queue 
        myQueue.Enqueue("one"); 
  
        // Displaying the count of elements 
        // contained in the Queue 
        Console.Write("Total number of elements in the Queue are : "); 
  
        Console.WriteLine(myQueue.Count); 
  
        myQueue.Enqueue("two"); 
  
        // Displaying the count of elements 
        // contained in the Queue 
        Console.Write("Total number of elements in the Queue are : "); 
  
        Console.WriteLine(myQueue.Count); 
  
        myQueue.Enqueue("three"); 
  
        // Displaying the count of elements 
        // contained in the Queue 
        Console.Write("Total number of elements in the Queue are : "); 
  
        Console.WriteLine(myQueue.Count); 
  
        myQueue.Enqueue("four"); 
  
        // Displaying the count of elements 
        // contained in the Queue 
        Console.Write("Total number of elements in the Queue are : "); 
  
        Console.WriteLine(myQueue.Count); 
  
        myQueue.Enqueue("five"); 
  
        // Displaying the count of elements 
        // contained in the Queue 
        Console.Write("Total number of elements in the Queue are : "); 
  
        Console.WriteLine(myQueue.Count); 
  
        myQueue.Enqueue("six"); 
  
        // Displaying the count of elements 
        // contained in the Queue 
        Console.Write("Total number of elements in the Queue are : "); 
  
        Console.WriteLine(myQueue.Count); 
    } 
} 
输出:
Total number of elements in the Queue are : 1
Total number of elements in the Queue are : 2
Total number of elements in the Queue are : 3
Total number of elements in the Queue are : 4
Total number of elements in the Queue are : 5
Total number of elements in the Queue are : 6

Properties

属性 说明
Queue.Count 获取 Queue 中包含的元素数量。
Queue.IsSynchronized 获取一个值,该值指示对 Queue 的访问是否同步(线程安全)。
SyncRoot 获取可用于同步对队列的访问的对象。

例子:


// C# code to Get the number of 
// elements contained in the Queue 
using System; 
using System.Collections; 
  
class GFG { 
  
    // Driver code 
    public static void Main() 
    { 
  
        // Creating a Queue 
        Queue myQueue = new Queue(); 
  
        // Inserting the elements into the Queue 
        myQueue.Enqueue("Chandigarh"); 
        myQueue.Enqueue("Delhi"); 
        myQueue.Enqueue("Noida"); 
        myQueue.Enqueue("Himachal"); 
        myQueue.Enqueue("Punjab"); 
        myQueue.Enqueue("Jammu"); 
  
        // Displaying the count of elements 
        // contained in the Queue 
        Console.Write("Total number of elements in the Queue are : "); 
  
        Console.WriteLine(myQueue.Count); 
    } 
} 
输出:
Total number of elements in the Queue are : 6

Methods

方法 说明
Queue.Clear 从队列中删除所有对象。
Queue.Clone() 创建队列的浅拷贝。
Queue.Contains() 确定元素是否在队列中。
Queue.CopyTo() 从指定的数组索引开始,将队列元素复制到现有的一维数组。
Queue.Dequeue 删除并返回队列开头的对象。
Queue.Enqueue() 将一个对象添加到队列末尾。
Queue.Equals() 确定指定对象是否等于当前对象。
Queue.GetEnumerator 返回一个遍历队列的枚举器。
GetHashCode() 用作默认的哈希函数。
GetType() 获取当前实例的类型。
MemberwiseClone() 创建当前对象的浅拷贝。
Queue.Peek 返回队列开头的对象而不删除它。
Queue.Synchronized() 返回一个包装原始队列的新队列,并且是线程安全的。
Queue.ToArray 将队列元素复制到新数组。
ToString() 返回表示当前对象的字符串。
TrimToSize() 将容量设置为队列中元素的实际数量。

示例 1:


// C# code to Check if a Queue 
// contains an element 
using System; 
using System.Collections; 
  
class GFG { 
  
    // Driver code 
    public static void Main() 
    { 
  
        // Creating a Queue 
        Queue myQueue = new Queue(); 
  
        // Inserting the elements into the Queue 
        myQueue.Enqueue(5); 
        myQueue.Enqueue(10); 
        myQueue.Enqueue(15); 
        myQueue.Enqueue(20); 
        myQueue.Enqueue(25); 
  
        // Checking whether the element is 
        // present in the Queue or not 
        // The function returns True if the 
        // element is present in the Queue, else 
        // returns False 
        Console.WriteLine(myQueue.Contains(7)); 
    } 
} 
输出:
False

示例 2:


// C# code to Convert Queue to array 
using System; 
using System.Collections; 
  
class GFG { 
  
    // Driver code 
    public static void Main() 
    { 
  
        // Creating a Queue  
        Queue myQueue = new Queue(); 
  
        // Inserting the elements into the Queue 
        myQueue.Enqueue("Geeks"); 
        myQueue.Enqueue("Geeks Classes"); 
        myQueue.Enqueue("Noida"); 
        myQueue.Enqueue("Data Structures"); 
        myQueue.Enqueue("GeeksforGeeks"); 
  
        // Converting the Queue 
        // into object array 
        Object[] arr = myQueue.ToArray(); 
  
        // Displaying the elements in array 
        foreach(Object obj in arr) 
        { 
            Console.WriteLine(obj); 
        } 
    } 
} 
输出:
Geeks
Geeks Classes
Noida
Data Structures
GeeksforGeeks

参考:



相关用法


注:本文由纯净天空筛选整理自Sahil_Bansall大神的英文原创作品 C# | Queue Class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。