C# Queue用法详解(附带实例)
队列(queue)是一个线性的数据结构,特色是从一端插入数据至队列,插入数据至队列的动作称为 enqueue;从队列另一端读取(或取出)数据,读取队列数据称为 dequeue,数据读取后就将数据从队列中移除。
由于每一笔数据都从一端进入队列,从另一端离开队列,因此整个过程有先进先出(first in first out)的特征。
队列执行过程读者可以想象为,当进入麦当劳点餐时,柜台端接受不同客户点餐,先点的餐点会先被处理,供客户享用,同时此已供应的餐点就会从点餐流程中移除。
如果要创建 Queue 对象,同时还要设定此对象的容量,则可以增加 Int32 参数,详情可以参考下列语法:
如果要创建 Queue 对象,同时将指定项目复制至此对象,则可以使用下列语法:
【实例 1】创建元素是字符串的 Queue 对象,然后输出。
【实例 2】创建 Queue 对象然后输出元素个数。
【实例 3】创建队列数据,然后测试 Enqueue() 和 Dequeue() 方法。
【实例 4】测试 Contains() 方法。
由于每一笔数据都从一端进入队列,从另一端离开队列,因此整个过程有先进先出(first in first out)的特征。

队列执行过程读者可以想象为,当进入麦当劳点餐时,柜台端接受不同客户点餐,先点的餐点会先被处理,供客户享用,同时此已供应的餐点就会从点餐流程中移除。

C# Queue对象的创建
如果只是创建 Queue 对象,则可以使用下列语法:Queue<T> 对象名称 = new Queue<T>();
如果要创建 Queue 对象,同时还要设定此对象的容量,则可以增加 Int32 参数,详情可以参考下列语法:
Queue<T> 对象名称 = new Queue<T>(Int32);
如果要创建 Queue 对象,同时将指定项目复制至此对象,则可以使用下列语法:
Queue<T> 对象名称 = new Queue<T>(IEnumerable<T>);
【实例 1】创建元素是字符串的 Queue 对象,然后输出。
string[] str = new string[] { "one", "five", "ten" };
Queue<string> number = new Queue<string>(str);
foreach (var n in number)
Console.Write($"{n} ");
执行结果
one five ten
C# Queue的属性
Queue 的属性为 Count,其可以获得 Queue 对象的元素个数。【实例 2】创建 Queue 对象然后输出元素个数。
string[] books = { "C语言入门教程",
"C++基础教程",
"Python基础教程" };
Queue<string> mybooks = new Queue<string>(books);
Console.WriteLine($"Queue元素数量:{mybooks.Count}");
执行结果
Queue元素数量:3
C# Queue的方法
Queue 的常用方法如下:| 方法名称 | 描述 |
|---|---|
| Queue<T>.Enqueue(T) | 在队列增加元素。 |
| Queue<T>.Dequeue() | 读取和移除队列前端元素。 |
| Queue<T>.Peek() | 读取队列前端元素,但是不移除此元素。 |
| Queue<T>.Contains(T) | 回传元素是否存在,如果存在则回传 true,反之则回传 false。 |
| Queue<T>.Clear() | 清除所有元素。 |
| Queue<T>.ToArray(T) | 将队列复制到数组。 |
| Queue<T>.CopyTo(T[] array, int arrayIndex) | 复制队列到数组指定索引位置。 |
【实例 3】创建队列数据,然后测试 Enqueue() 和 Dequeue() 方法。
Queue<string> numbers = new Queue<string>();
numbers.Enqueue("one");
numbers.Enqueue("two");
numbers.Enqueue("three");
Console.WriteLine($"队列元素数量:{numbers.Count}");
Console.WriteLine($"Peek() 资料:{numbers.Peek()}");
Console.WriteLine($"Peek()后队列元素数量:{numbers.Count}");
Console.WriteLine($"Dequeue() 资料:{numbers.Dequeue()}");
Console.WriteLine($"Dequeue()后队列元素数量:{numbers.Count}");
Console.WriteLine($"Dequeue() 资料:{numbers.Dequeue()}");
执行结果为:
队列元素数量:3
Peek() 资料:one
Peek()后队列元素数量:3
Dequeue() 资料:one
Dequeue()后队列元素数量:2
Dequeue() 资料:two
【实例 4】测试 Contains() 方法。
Queue<int> queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);
Console.WriteLine($"queue.Contains(2):{queue.Contains(2)}");
Console.WriteLine($"queue.Contains(4):{queue.Contains(4)}");
执行结果为:
queue.Contains(2):True
queue.Contains(4):False
ICP备案:
公安联网备案: