持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情
Queue是C#为我们封装好的类,它的本质是object[]数组,其中封装了特殊的存储规则。
Queue是队列存储容器,队列是一种先进先出的数据结构,先存入的数据先获取,后存入的数据后获取。当我们需要对各项进行先进先出的访问时,则使用队列。当我们在列表中添加一项,称为入队;当我们从列表中移除一项时,称为出队.在队列中, 我们可以存储相同类型和不同类型的元素。通常, 当我们以与存储在集合中相同的方式访问该信息时, 队列是有用的, 因为它是存储数据的临时存储。
那么我们改如何申明Queue呢,我们可以使用以下代码来申明:
Queue queue = new Queue();//Stack在System.Collections命名空间下定义;因此,在程序中使用Queue时,必须添加System.Collections命名空间
下面列举 Queue 类的一些常用的 方法:
public virtual void Clear();//从 Queue 中移除所有的元素。
public virtual bool Contains( object obj );//判断某个元素是否在 Queue 中。
public virtual object Dequeue();//移除并返回在 Queue 的开头的对象。
public virtual void Enqueue( object obj );//向 Queue 的末尾添加一个对象。
public virtual object[] ToArray();//复制 Queue 到一个新的数组中。
public virtual void TrimToSize();//设置容量为 Queue 中元素的实际个数。
需要注意的是,Queue的增删查改有些不同,Queue队列中不存在删除的概念,只有取的概念,即取出先加入的对象,和栈的方法相同。查看只能查看队列头部数据但并不会将其移除,也可以查看数据是否存在于队列中。Queue队列无法改变其中的数据,只能进出队列。如果非要改的化,只能和栈一样选择清空。
遍历
长度
Console.WriteLine(queue.Count);
用foreach遍历
foreach(object item in queue)
{
Console.WriteLine(item);
}
第三种遍历方法是将队列转换为object数组
Object[] array = queue.ToArray();
for(int i=0;i<array.Length;i++)
{
Console.WriteLine(array[i]);
}
循环出列
while(queue.Count>0)
{
Object o=queue.Dequeue();
Console.WriteLine(o);
}
Console.WriteLine(queue.Count);
由于Queue用万物之父来存储数据,所以存在装箱拆箱的概念。当我们往其中进行值类型存储时,就是在装箱;当我们将值类型对象取出来转换使用时,就是在拆箱。