1. 程式人生 > >C# 三十九、Queue

C# 三十九、Queue

定義

一、初始化 System.Collections.Generic.Queue`1 類的新例項,該例項為空並且具有預設初始容量。

Queue<資料型別> 識別符號 = new Queue<資料型別>();

二、初始化 System.Collections.Generic.Queue`1 類的新例項,該例項為空並且具有指定的初始容量。

QueuQueue<資料型別> 識別符號 = new Queue<資料型別>(指定的初始容量);

三、初始化 System.Collections.Generic.Queue`1 類的新例項,該例項包含從指定集合複製的元素並且具有足夠的容量來容納所複製的元素。

QuQueuQueue<資料型別> 識別符號 = new Queue<資料型別>(元素被複制的源集合);

Queue 類的一些常用的屬性

public virtual int Count { get; }

官方摘要:獲取 System.Collections.Generic.Queue`1 中包含的元素數。

返回結果:System.Collections.Generic.Queue`1 中包含的元素數。

簡單理解:獲取包含的元素個數。

程式碼示例:

Queue<string> queue = new Queue<string>();

Console.WriteLine(queue.Count);

--->
0

Stack 類的一些常用的方法

public void Enqueue(T item);

官方摘要:將物件新增到 System.Collections.Generic.Queue`1 的結尾處。

引數說明:

  • obj:要新增到 System.Collections.Generic.Queue`1的物件。對於引用型別,該值可以為 null。

簡單理解:將元素新增到結尾。

程式碼示例:

Queue<string> queue = new Queue<string>();

queue.Enqueue("aa");
queue.Enqueue("bb");
queue.Enqueue("cc");

foreach (var item in queue)
{
    Console.WriteLine(item);
}

--->
aa
bb
cc

public virtual void Clear();

官方摘要:從 System.Collections.Generic.Queue`1  中移除所有物件。

簡單理解:從 Queue 中移除所有的元素。

程式碼示例:

Queue<string> queue = new Queue<string>();

queue.Enqueue("aa");
queue.Enqueue("bb");

 queue.Clear();

queue.Enqueue("cc");

foreach (var item in queue)
{
    Console.WriteLine(item);
}

--->
cc

public bool Contains(T item);

官方摘要:確定某元素是否在 System.Collections.Generic.Queue`1  中。

引數說明:

  • item:要在 System.Collections.Generic.Queue`1 中定位的物件。 對於引用型別,該值可以為 null。

返回結果:如果在System.Collections.Generic.Queue`1中找到 obj,則為true ;否則為 false。

簡單理解:判斷某個元素是否在 Queue 中。

程式碼示例:

Queue<string> queue = new Queue<string>();

queue.Enqueue("aa");
queue.Enqueue("bb");
queue.Enqueue("cc");

Console.WriteLine(queue.Contains("bb"));

--->
True

public void CopyTo(T[] array, int arrayIndex);

官方摘要:從指定陣列索引開始將 System.Collections.Generic.Queue`1 元素複製到現有一維 System.Array 中。

引數說明:

  • array:一維 System.Array,是從 System.Collections.Generic.Queue`1 複製的元素的目標。 System.Array 必須具有從零開始的索引。
  • arrayIndex:array 中從零開始的索引,從此處開始複製。

簡單理解:將 Queue 中元素複製到陣列。

程式碼示例:

Queue<string> queue = new Queue<string>();

queue.Enqueue("aa");
queue.Enqueue("bb");
queue.Enqueue("cc");

string[] arr = new string[3];

queue.CopyTo(arr, 0);

foreach (var item in arr)
{
    Console.WriteLine(item);
}

--->
aa
bb
cc

public T Dequeue();

官方摘要:移除並返回位於 System.Collections.Generic.Queue`1 開始處的物件。

返回結果:從System.Collections.Generic.Queue`1 的開始處移除的物件。

簡單理解:移除並返回在 Queue 的開頭的物件。

程式碼示例:

Queue<string> queue = new Queue<string>();

queue.Enqueue("aa");
queue.Enqueue("bb");
queue.Enqueue("cc");

Console.WriteLine(queue.Dequeue());

foreach (var item in queue)
{
    Console.WriteLine(item);
}

--->
aa
bb
cc

public T Peek();

官方摘要:返回位於 System.Collections.Generic.Queue`1 開始處的物件但不將其移除。

返回結果:位於System.Collections.Generic.Queue`1  的開頭的物件。

簡單理解:返回在 Queue 的開頭的物件,不移除。

程式碼示例:

Queue<string> queue = new Queue<string>();

queue.Enqueue("aa");
queue.Enqueue("bb");
queue.Enqueue("cc");

Console.WriteLine(queue.Peek());

foreach (var item in queue)
{
    Console.WriteLine(item);
}

--->
aa
aa
bb
cc

public T[] ToArray();

官方摘要:將System.Collections.Generic.Queue`1 元素複製到新陣列。

返回結果:新陣列,包含從System.Collections.Generic.Queue`1 複製的元素。

簡單理解:複製 Queue 到一個新的陣列中。

程式碼示例:

Queue<string> queue = new Queue<string>();

queue.Enqueue("aa");
queue.Enqueue("bb");
queue.Enqueue("cc");

string[] arr = queue.ToArray();

foreach (var item in arr)
{
    Console.WriteLine(item);
}

--->
aa
bb
cc

public virtual void TrimToSize();

官方摘要:將容量設定為 System.Collections.Queue 中元素的實際數目。

簡單理解:設定容量為 Queue 中元素的實際個數。

程式碼示例:

Queue queue = new Queue(5);

queue.Enqueue("aa");
queue.Enqueue("bb");
queue.Enqueue("cc");

queue.TrimToSize();

public void TrimExcess();

官方摘要:如果元素數小於當前容量的 90%,將容量設定為 System.Collections.Generic.Queue`1 中的實際元素數。