队列 Queue

Queue 是一种特殊类型的集合,它以 FIFO (先进先出)的方式来存储元素,与 堆栈 Stack 完全相反。 C# 包括通用 Queue 和非通用 Queue 集合。 建议使用通用 Queue 集合。

队列 Queue 特征

  • Queue 是 FIFO(先进先出)集合。
  • 它位于 System.Collection.Generic 命名空间下。
  • Queue 可以包含指定类型的元素。 它提供编译时类型检查并且不执行装箱拆箱,因为它是泛型。
  • 可以使用 Enqueue() 方法添加元素。 不能使用集合初始值设定项语法。
  • 可以使用 Dequeue() 和 Peek() 方法检索元素。 它不支持索引器。

创建队列

我们可以通过指定类型参数来创建 Queue 的对象。 以下示例使用 Enqueue() 方法在 Queue 中创建和添加元素。 Queue 集合允许 null(对于引用类型)和重复值。

static void Main(string[] args)
{
    var myQueue = new Queue<int>();
    myQueue.Enqueue(1);
    myQueue.Enqueue(2);
    myQueue.Enqueue(3);
    myQueue.Enqueue(4);

    foreach (var id in myQueue)
        Console.Write(id); //prints 1234
}

Queue 类的方法和属性

下表列出了 Queue 类的一些常用的 属性:

属性 描述
Count 获取 Queue 中包含的元素个数。

下表列出了 Queue 类的一些常用的 方法:

方法名 描述
void Clear(); 从 Queue 中移除所有的元素。
bool Contains(T item); 判断某个元素是否在 Queue 中。
T Dequeue(); 移除并返回在 Queue 的开头的对象。
T Peek() 返回在 Queue开头的对象,但不移除它。
void Enqueue(T item); 向 Queue 的末尾添加一个对象。
T[] ToArray(); 复制 Queue 到一个新的数组中。
void TrimExcess(); 将容量设置为 List 中的实际元素数目(如果该数目小于某个阈值)。压缩占用的空间了

例子

static void Main(string[] args)
{
    var myQueue = new Queue<int>(2);
    myQueue.Enqueue(1);
    myQueue.Enqueue(2);
    myQueue.Enqueue(3);
    myQueue.Enqueue(4);

    var first = myQueue.Dequeue(); //1
    var has = myQueue.Contains(2); // true;
    
    foreach (var id in myQueue)
        Console.Write(id); //prints 234
    var second = myQueue.Peek(); //2 没有移除元素
}
上一篇:C# 堆栈 Stack
下一篇:C# 元组Tuple
最近更新的
...