目录
表示对象的先进先出集合。
队列和其他的数据结构一样,是一种存储容器,它遵循先进先出的原则,能够存储任意类型,但并不能获取到指定的位置,只能存入和取出,取出元素后,Queue 内部的元素自动删除,其实 队列 和 栈 使用方法大致差不多,只是取出数据的顺序不一样。
官方文档参考:Queue 类 (System.Collections) | Microsoft Learn
添加元素使用 Enqueue 方法
- using System;
- using System.Collections;
- using System.Collections.Generic;
-
- namespace Queue_Test
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Queue queue = new Queue();
- queue.Enqueue(1);
- queue.Enqueue("你好");
- queue.Enqueue(true);
- queue.Enqueue(6.5);
-
- Console.ReadKey();
- }
- }
- }
取出元素后,元素会自动从 Queue 中删除
- using System;
- using System.Collections;
- using System.Collections.Generic;
-
- namespace Queue_Test
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Queue queue = new Queue();
- queue.Enqueue(1);
- queue.Enqueue("你好");
- queue.Enqueue(true);
- queue.Enqueue(6.5);
-
- var value = queue.Dequeue();
- Console.WriteLine("value:" + value);
- Console.WriteLine("长度:" + queue.Count);
-
- Console.ReadKey();
- }
- }
- }
运行

从执行的结果可以看到,最先存储的,最先被取出去。
读取最先添加的一个元素,读取后,元素不会从 Queue 中删除,但是只能读取一个元素
- using System;
- using System.Collections;
- using System.Collections.Generic;
-
- namespace Queue_Test
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Queue queue = new Queue();
- queue.Enqueue(1);
- queue.Enqueue("你好");
- queue.Enqueue(true);
- queue.Enqueue(6.5);
-
- var value = queue.Peek();
- Console.WriteLine("value:" + value);
- Console.WriteLine("长度:" + queue.Count);
-
- Console.ReadKey();
- }
- }
- }
运行

使用 Contains 来判断元素是否存在
- using System;
- using System.Collections;
- using System.Collections.Generic;
-
- namespace Queue_Test
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Queue queue = new Queue();
- queue.Enqueue(1);
- queue.Enqueue("你好");
- queue.Enqueue(true);
- queue.Enqueue(6.5);
-
- if(queue.Contains(1))
- Console.WriteLine("存在");
- else
- Console.WriteLine("不存在");
-
- Console.ReadKey();
- }
- }
- }
运行

长度的获取和 List 一样,使用 Count 属性
- using System;
- using System.Collections;
- using System.Collections.Generic;
-
- namespace Queue_Test
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Queue queue = new Queue();
- queue.Enqueue(1);
- queue.Enqueue("你好");
- queue.Enqueue(true);
- queue.Enqueue(6.5);
-
- Console.WriteLine("长度:" + queue.Count);
-
- Console.ReadKey();
- }
- }
- }
运行

可以使用 foreach 遍历队列,遍历并不会移除元素
- using System;
- using System.Collections;
- using System.Collections.Generic;
-
- namespace Queue_Test
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Queue queue = new Queue();
- queue.Enqueue(1);
- queue.Enqueue("你好");
- queue.Enqueue(true);
- queue.Enqueue(6.5);
-
- foreach (var item in queue)
- {
- Console.WriteLine(item);
- }
- Console.WriteLine("长度:" + queue.Count);
-
- Console.ReadKey();
- }
- }
- }
运行

使用 Clear 方法来清空队列
- using System;
- using System.Collections;
- using System.Collections.Generic;
-
- namespace Queue_Test
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Queue queue = new Queue();
- queue.Enqueue(1);
- queue.Enqueue("你好");
- queue.Enqueue(true);
- queue.Enqueue(6.5);
-
- Console.WriteLine("长度:" + queue.Count);
- queue.Clear();
- Console.WriteLine("长度:" + queue.Count);
-
- Console.ReadKey();
- }
- }
- }
运行

queue 和 stack 一样,都有一个泛型类,作用也一样,就是用来存储固定类型的数据,在使用时,需要加上指定的类型,在使用这些数据时,就没必要对每个数据都去类型检测,使用起来也更加规范。
- using System;
- using System.Collections;
- using System.Collections.Generic;
-
- namespace Queue_Test
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Queue<string> queue = new Queue<string>();
-
- //向队列中添加元素
- queue.Enqueue("老一");
- queue.Enqueue("老二");
- queue.Enqueue("老三");
-
- //获取队列的数量
- int count = queue.Count;
- //队列中是否包含指定的 value
- bool b = queue.Contains("老王");
-
- //Peek方法是返回顶部的对象而不将其从堆栈中移除
- string names = queue.Peek();
-
- //获取队列中的元素
- //每次调用 Dequeue 方法,获取并移除队列中队首的元素
- string s1 = queue.Dequeue();
- Console.WriteLine(s1);
- string s2 = queue.Dequeue();
- Console.WriteLine(s2);
- string s3 = queue.Dequeue();
- Console.WriteLine(s3);
-
- //清空队列
- queue.Clear();
-
- Console.ReadKey();
- }
- }
- }
queue 和 stack 的特征和使用方法大致相同,主要特点:先进先出,存在装箱拆箱,存储任意类型,无法获取指定位置元素,只能取出最先存储的元素。
end