Queue<T> 是一个泛型类,它使用先进先出 (FIFO) 原则来组织指定数据类型的元素。例如:
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// create a queue
Queue<string> fruits = new Queue<string>();
// adds "Apple" and "Orange" to the queue
fruits.Enqueue("Apple");
fruits.Enqueue("Orange");
// print elements of the queue
foreach (string item in fruits)
{
Console.WriteLine(item);
}
}
}
输出
Apple Orange
这里,fruits 是一个包含字符串元素("Apple" 和 "Orange")的队列。
我们将详细学习 Queue<T>。
队列实现
在队列中,元素以先进先出 (FIFO) 的方式存储和访问。也就是说,先添加的元素将先被移除。
在 C# 中创建队列
要在 C# 中创建 Queue<T>,我们需要使用 System.Collection.Generic 命名空间。以下是在 C# 中创建 Queue<T> 的方法:
Queue<dataType> queueName = new Queue<dataType>();
这里,dataType 指示队列的类型。例如:
// create integer type stack
Queue<int> queue1 = new Queue<int>();
// create string type stack
Queue<string> queue2 = new Queue<string>();
C# 队列方法
C# 提供了3个主要的 Queue<T> 方法。这些方法是:
Enqueue()- 将元素添加到队列的末尾Dequeue()- 从队列的开头移除并返回一个元素Peek()- 从队列的开头返回一个元素而不移除它
让我们逐一详细学习这些方法。
队列Enqueue() 方法
要将元素添加到队列的末尾,我们使用 Enqueue() 方法。例如:
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// create a queue
Queue<int> numbers = new Queue<int>();
// adds 65 and 17 to the queue
numbers.Enqueue(65);
numbers.Enqueue(17);
// print elements of the queue
foreach (int item in numbers)
{
Console.WriteLine(item);
}
}
}
输出
65 17
在上面的示例中,我们创建了一个名为 numbers 的 Queue<T> 类。
然后,我们使用 Enqueue() 方法将元素添加到队列中。
numbers.Enqueue(65)- 将 65 添加到队列numbers.Enqueue(17)- 将 17 添加到队列
然后,我们使用 foreach 循环打印这些元素。
由于队列遵循FIFO原则,因此首先添加的元素(65)在输出中也首先显示。
队列Dequeue() 方法
要从队列的开头移除一个元素,我们使用 Dequeue() 方法。例如:
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// create a queue
Queue<string> colors = new Queue<string>();
// adds "Red" and "Blue" to the queue
colors.Enqueue("Red");
colors.Enqueue("Blue");
// removes element from the beginning of the colors queue
var removedElement = colors.Dequeue();
Console.WriteLine("Removed Element: " + removedElement);
}
}
输出
Removed Element: Red
在上面的示例中,我们使用 Dequeue() 方法从 colors 队列中移除一个元素。
该方法从队列开头移除并返回了 "Red"。
队列Peek() 方法
Peek() 方法在不移除元素的情况下返回队列开头的元素。例如:
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// create a queue
Queue<string> planet = new Queue<string>();
// adds "Earth" and "Jupiter" to the queue
planet.Enqueue("Earth");
planet.Enqueue("Jupiter");
// returns element from the beginning of the planet queue
Console.WriteLine("Element at beginning of queue: " + planet.Peek());
}
}
输出
Element at beginning of queue: Earth
在这里,我们使用 Peek() 方法显示了 planet 队列开头的元素。
检查队列中是否存在某个元素
我们可以使用 Contains() 方法来检查队列中是否存在某个元素。
如果指定的元素存在于队列中,该方法将返回 True。如果不存在,则返回 False。例如:
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// create a queue
Queue<string> planet = new Queue<string>();
// adds "Earth" and "Jupiter" to the queue
planet.Enqueue("Earth");
planet.Enqueue("Jupiter");
// check if queue contains "Mars"
Console.WriteLine(planet.Contains("Mars"));
// check if queue contains "Jupiter"
Console.WriteLine(planet.Contains("Jupiter"));
}
}
输出
False True