當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。