C# 中的队列详解(包含示例)

作者:微信公众号:【架构师老卢】
6-11 16:36
20

概述:队列与 System.Collections.Generic 命名空间相关。在队列中,队列元素被添加到队列的后面(排队),并从队列的前面(取消排队)中删除。这是一种先进先出 (FIFO) 数据结构方法。C# 中的队列(包含示例)C# 中队列的功能:创建队列:您需要导入 System.Collections.Generic 命名空间才能使用 Queue。若要创建队列,可以使用以下代码:例using System.Collections.Generic;Queueint queuefruitprices = new Queueint();Queuestring queuefruitnames =

队列与 System.Collections.Generic 命名空间相关。在队列中,队列元素被添加到队列的后面(排队),并从队列的前面(取消排队)中删除。这是一种先进先出 (FIFO) 数据结构方法。

C# 中的队列(包含示例)

C# 中队列的功能:

创建队列:

您需要导入 System.Collections.Generic 命名空间才能使用 Queue。若要创建队列,可以使用以下代码:

using System.Collections.Generic;
Queue<int> queuefruitprices = new Queue<int>();
Queue<string> queuefruitnames = new Queue<string>();

排队元素:

可以使用 Enqueue 方法将元素添加到队列的后面:

queuefruitprices.Enqueue(12);  
queuefruitprices.Enqueue(16);  
queuefruitprices.Enqueue(22);  
queuefruitprices.Enqueue(28);  
queuefruitprices.Enqueue(9);  
queuefruitnames.Enqueue("Apple");  
queuefruitnames.Enqueue("Mango");  
queuefruitnames.Enqueue("Cherry");  
queuefruitnames.Enqueue("Orange");  
queuefruitnames.Enqueue("Grape");  
queuefruitnames.Enqueue("Kiwi");

排队元素:

可以使用 Dequeue 方法从队列的前面删除元素:

int frontItem = queuefruitprices.Dequeue(); // Removes and returns 9  
string frontItem = queuefruitnames.Dequeue(); // Removes and returns Apple

偷看前面的元素:

您可以使用 Peek 方法检查队列前面的元素,而无需将其删除:

int frontItem1 = queuefruitprices.Peek(); // Returns 6 (without removing it)  
string frontItem2 = queuefruitnames.Peek(); // Returns Mango (without removing it)

检查队列是否为空:

在 C# 7.0 及更高版本中,可以使用 Count 属性或 IsEmpty 属性检查队列是否为空:

bool isEmpty = queuefruitprices.Count == 0;  
bool isEmpty = queuefruitnames.Count == 0;

遍历队列:

您可以使用 foreach 循环循环访问队列中的元素。这将按照元素的添加顺序处理元素:

foreach (int item in queuefruitprices)  
{  
  Console.WriteLine(item); // 9, 6, 12, 5, 18, 22 Prints  
}

foreach (string item in queuefruitnames)  
{  
  Console.WriteLine(item); // Prints Apple,Mango,Cherry,Orange,Grape,Kiwi  
}

清除队列:

可以使用 Clear 方法清除整个队列:

queuefruitprices.Clear(); // Removes all elements from the queue  
queuefruitnames.Clear(); // Removes all elements from the queue

C# 中的队列和完整示例

using System;
using System.Collections.Generic;
public class Program
{
  public static void Main(string[] args)
  {
    Queue<int> queuefruitprices = new Queue<int>();
    Queue<string> queuefruitnames = new Queue<string>();
    queuefruitprices.Enqueue(9);
    queuefruitprices.Enqueue(6);
    queuefruitprices.Enqueue(12);
    queuefruitprices.Enqueue(5);
    queuefruitprices.Enqueue(18);
    queuefruitprices.Enqueue(22);
    queuefruitnames.Enqueue("Apple");
    queuefruitnames.Enqueue("Mango");
    queuefruitnames.Enqueue("Cherry");
    queuefruitnames.Enqueue("Orange");
    queuefruitnames.Enqueue("Grape");
    queuefruitnames.Enqueue("Kiwi");
    foreach (int price in queuefruitprices)
    {
      Console.Write(price + " ");
    }
    Console.WriteLine("\n");
    foreach (string name in queuefruitnames)
    {
      Console.Write(name + " ");
    }
    Console.WriteLine("\n");
    int frontItem1 = queuefruitprices.Dequeue();
    string frontItem2 = queuefruitnames.Dequeue();
    Console.Write(frontItem1 + " ");
    Console.Write(frontItem2 + " ");
    Console.WriteLine("\n");
    int frontItem3 = queuefruitprices.Peek();
    string frontItem4 = queuefruitnames.Peek();
    Console.Write(frontItem3 + " ");
    Console.Write(frontItem4 + " ");
    Console.WriteLine("\n");
  }
}

输出

9 6 12 5 18 22  
Apple Mango Cherry Orange Grape Kiwi  
9 Apple  
6 Mango

总结

当您需要维护要按特定顺序处理的项目列表时,队列非常有用,其中添加的第一个项目是第一个要处理的项目。

阅读排行