集合
队列
前言
Queue<T>
是一个泛型类,按照“先进先出”(FIFO)的原则排列指定数据类型的元素。例如:
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// 创建一个队列
Queue<string> fruits = new Queue<string>();
// 向队列中添加 "Apple" 和 "Orange"
fruits.Enqueue("Apple");
fruits.Enqueue("Orange");
// 打印队列中的元素
foreach (string item in fruits)
{
Console.WriteLine(item);
}
}
}
输出
Apple
Orange
在这个例子中,fruits
是一个 Queue<string>
,包含了字符串元素(”Apple” 和 “Orange”)。接下来,我们将详细了解 Queue<T>
。
作用
Queue<T>
用于存储遵循“先进先出”原则的元素。这意味着最早添加的元素会最先被移除。这种数据结构适用于需要顺序处理数据的场景。
使用场景
Queue<T>
适用于以下情况:
- 任务调度:如任务队列、线程池任务处理。
- 排队系统:如打印队列、客户服务队列。
- 消息处理:如消息队列系统中的消息传递。
示例
- 创建 Queue
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// 创建整数类型的队列
Queue<int> queue1 = new Queue<int>();
// 创建字符串类型的队列
Queue<string> queue2 = new Queue<string>();
}
}
- 使用 Enqueue() 方法
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// 创建一个队列
Queue<double> temperatures = new Queue<double>();
// 向队列中添加温度值
temperatures.Enqueue(23.5);
temperatures.Enqueue(18.7);
// 打印队列中的元素
foreach (double temp in temperatures)
{
Console.WriteLine(temp);
}
}
}
输出
23.5
18.7
- 使用 Dequeue() 方法
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// 创建一个队列
Queue<string> tasks = new Queue<string>();
// 向队列中添加任务
tasks.Enqueue("清理桌面");
tasks.Enqueue("写报告");
// 从队列开头移除并返回元素
var removedTask = tasks.Dequeue();
Console.WriteLine("移除的任务: " + removedTask);
}
}
输出
移除的任务: 清理桌面
- 使用 Peek() 方法
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// 创建一个队列
Queue<string> books = new Queue<string>();
// 向队列中添加书名
books.Enqueue("《三国演义》");
books.Enqueue("《水浒传》");
// 返回队列开头的元素
Console.WriteLine("队列开头的元素: " + books.Peek());
}
}
输出
队列开头的元素: 《三国演义》
- 检查队列中是否包含某个元素
我们可以使用 Contains()
方法来检查队列中是否包含某个元素。如果指定的元素存在,则方法返回 True
;否则返回 False
。例如:
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// 创建一个队列
Queue<string> planets = new Queue<string>();
// 向队列中添加行星名称
planets.Enqueue("地球");
planets.Enqueue("木星");
// 检查队列中是否包含 "火星"
Console.WriteLine(planets.Contains("火星"));
// 检查队列中是否包含 "木星"
Console.WriteLine(planets.Contains("木星"));
}
}
输出
False
True
结语
Queue<T>
提供了一种高效的方式来管理遵循“先进先出”原则的数据集合。通过理解和使用 Queue<T>
,可以在需要顺序处理数据的应用场景中提升代码的效率和可读性。