1. 程式人生 > >C#學習之Queue分析

C#學習之Queue分析

1、Queue定義

佇列(Queue)代表了一個先進先出的物件集合。當您需要對各項進行先進先出的訪問時,則使用佇列。當您在列表中新增一項,稱為入隊,當您從列表中移除一項時,稱為出隊 

2、優點

 a、能對集合進行順序處理(先進先出)。

 b、能接受null值,並且允許重複的元素。

3、 Queue的構造器

構造器函式

註釋

初始化 Queue 類的新例項,該例項為空,具有預設初始容量(32)並使用預設增長因子(2.0)。

初始化 Queue 類的新例項,該例項包含從指定集合複製的元素,具有與所複製的元素數相同的初始容量並使用預設增長因子。

初始化 Queue 類的新例項,該例項為空,具有指定的初始容量並使用預設增長因子。

初始化 Queue 類的新例項,該例項為空,具有指定的初始容量並使用指定的增長因子。

4、Queue的屬性

屬性名

註釋

Count

獲取 Queue 中包含的元素數。

5. Queue的方法

方法名

註釋

Void Clear()

從 Queue 中移除所有物件。

Bool Contains(object obj)

確定某元素是否在 Queue 中。

Object Clone()

建立 Queue 的淺表副本。

Void CopyTo(Array array,int index)

從指定陣列索引開始將 Queue 元素複製到現有一維 

Array 中。

移除並返回位於 Queue 開始處的物件。

Void Enqueue(object obj)

將物件新增到 Queue 的結尾處。

Object Peek()

返回位於 Queue 開始處的物件但不將其移除。

將 Queue 元素複製到新陣列。

將容量設定為 Queue 中元素的實際數目。

6、Queue的使用示例

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
class Program { static void Main(string[] args)     { //建立一個佇列         Queue myQ = new Queue();         myQ.Enqueue("The");//入隊         myQ.Enqueue("quick");         myQ.Enqueue("brown");         myQ.Enqueue("fox");         myQ.Enqueue(null);//新增null         myQ.Enqueue("fox");//新增重複的元素 // 列印佇列的數量和值         Console.WriteLine("myQ");         Console.WriteLine("\tCount:    {0}", myQ.Count); // 列印佇列中的所有值         Console.Write("Queue values:");         PrintValues(myQ); // 列印佇列中的第一個元素,並移除         Console.WriteLine("(Dequeue)\t{0}", myQ.Dequeue()); // 列印佇列中的所有值         Console.Write("Queue values:");         PrintValues(myQ); // 列印佇列中的第一個元素,並移除         Console.WriteLine("(Dequeue)\t{0}", myQ.Dequeue()); // 列印佇列中的所有值         Console.Write("Queue values:");         PrintValues(myQ); // 列印佇列中的第一個元素         Console.WriteLine("(Peek)   \t{0}", myQ.Peek()); // 列印佇列中的所有值         Console.Write("Queue values:");         PrintValues(myQ);         Console.ReadLine();     } public static void PrintValues(IEnumerable myCollection)     { foreach (Object obj in myCollection)             Console.Write("    {0}", obj);         Console.WriteLine();     } }

7.備註

 a、Queue 的容量是 Queue 可以儲存的元素數。Queue 的預設初始容量為 32。向 Queue 新增元素時,將通過重新分配來根據需要自動增大容量。可通過呼叫 TrimToSize 來減少容量。等比因子是當需要更大容量時當前容量要乘以的數字。在構造 Queue 時確定增長因子。預設增長因子為 2.0。

 b、Queue 能接受空引用作為有效值,並且允許重複的元素。

 c、空引用可以作為值新增到 Queue。若要區分空值和 Queue 結尾,請檢查 Count 屬性或捕捉 Queue 為空時引發的 InvalidOperationException異常。