C# Queue使用
使用场合
如果所存储的第一个对象正是要使用的第一个对象,就要使用Queue(队列),例如:
- 沿着单向街道行进的车流
- 排队的人
- 不挂机等候客户支持热线服务的客户
- 所有按先来先服务原则处理的情况
和List相比Queue的特点
- 不能按任意索引增加或删除项
- 增加对象时要入队(enqueue)
- 删除对象时,将第一个对象出队(dequeue)
代码示例
using System;
using System.Collections.Generic;
namespace 队列
{
internal class Program
{
private static void Main()
{
var myQueue=new Queue<string>();
myQueue.Enqueue("first in line");//对象入队
myQueue.Enqueue("second in line");
myQueue.Enqueue("third in line");
myQueue.Enqueue("last in line");
var takeALook = myQueue.Peek();//获取第一个对象(队头的对象),但是不删除改对象
var getFirst = myQueue.Dequeue();//获取第一个对象,然后删除队列中改对象
var getNext = myQueue.Dequeue();
var howMany = myQueue.Count;//获取队列中元素个数
myQueue.Clear();//清空队列中的对象
Console.WriteLine("Peek() return: {0}"+Environment.NewLine +
"first dequeue return: {1}" + Environment.NewLine+
"second dequeue return: {2}" + Environment.NewLine+
"two dequeue return count: {3}" + Environment.NewLine,
takeALook, getFirst, getNext, howMany);
Console.ReadKey();
}
}
}
总结
Queue 类的一些常用的 属性:
属性 | 描述 |
---|---|
Count | 获取 Queue 中包含的元素个数。 |
Queue 类的一些常用的 方法:
序号 | 方法名 & 描述 |
---|---|
1 | public virtual void Clear(); 从 Queue 中移除所有的元素。 |
2 | public virtual bool Contains( object obj ); 判断某个元素是否在 Queue 中。 |
3 | public virtual object Dequeue() 移除并返回在 Queue 的开头的对象。 |
4 | public virtual void Enqueue( object obj ); 向 Queue 的末尾添加一个对象。 |
5 | public virtual object[] ToArray(); 复制 Queue 到一个新的数组中。 |
6 | public virtual void TrimToSize(); 设置容量为 Queue 中元素的实际个数。 |