简单数据结构类——Queue

211 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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用万物之父来存储数据,所以存在装箱拆箱的概念。当我们往其中进行值类型存储时,就是在装箱;当我们将值类型对象取出来转换使用时,就是在拆箱。