CS4L3——Queue
本章代码关键字
1 2 3 4 5 6 7 8
| Queue queue.Enqueue() queue.Dequeue() queue.Peek() queue.Contains() queue.Clear() queue.Count queue.ToArray()
|
Queue
Queue
(队列)是一个C#为我们封装好的类,它的本质是 object[]
数组,只是封装了特殊的存储规则
Queue
是队列存储容器,队列是一种先进先出的数据结构
先存入的数据先获取,后存入的数据后获取,队列是先进先出
使用 Queue
需要引用 System.Collections
这个命名空间
1 2 3 4 5 6 7 8 9
| using System.Collections;
class Program { static void Main(string[] args) { Queue queue = new Queue(); } }
|
增取查改
增
可装任意类型,只能一个一个增加
1 2 3 4
| Queue queue = new Queue(); queue.Enqueue(1); queue.Enqueue("123"); queue.Enqueue(1.2f);
|
取
队列不存在删除的概念,只有取的概念,取出先加入的对象
1 2 3 4 5 6 7 8 9
| Queue queue = new Queue(); queue.Enqueue(1); queue.Enqueue("123"); queue.Enqueue(1.2f);
object v = queue.Dequeue(); Console.WriteLine(v); v = queue.Dequeue(); Console.WriteLine(v);
|
输出:
查
查看队列头部元素但不会移除
1 2 3 4 5 6 7 8
| Queue queue = new Queue(); queue.Enqueue(1); queue.Enqueue(2);
object v = queue.Peek(); Console.WriteLine(v); v = queue.Peek(); Console.WriteLine(v);
|
输出:
查看元素是否存在于队列中
1 2 3 4 5 6 7 8
| Queue queue = new Queue(); queue.Enqueue(1); queue.Enqueue(2);
if (queue.Contains(1)) { Console.WriteLine("存在"); }
|
输出:
改
队列无法改变其中元素,只能增和取,实在要改,只能清空
清空
遍历
队列元素数量
1 2 3 4
| Queue queue = new Queue(); queue.Enqueue(1); queue.Enqueue(2); Console.WriteLine(queue.Count);
|
输出:
循环出列
1 2 3 4 5 6 7 8 9
| Queue queue = new Queue(); queue.Enqueue(1); queue.Enqueue(2); Console.WriteLine("queue.Count:" + queue.Count); while (queue.Count > 0) { Console.WriteLine(queue.Dequeue()); } Console.WriteLine("queue.Count:" + queue.Count);
|
输出:
1 2 3 4
| queue.Count:2 1 2 queue.Count:0
|
转换为数组
还有一种遍历方式,将队列转换为 object
的数组
遍历出来的顺序也是从队头到队尾
1 2 3 4 5 6 7 8 9
| Queue queue = new Queue(); queue.Enqueue(1); queue.Enqueue(2);
object[] array = queue.ToArray(); for (int i = 0; i < array.Length; i++) { Console.WriteLine(array[i]); }
|
输出:
装箱拆箱
由于用万物之父 object
来存储数据,自然存在装箱拆箱,
当往其中进行值类型存储时就是在装箱,将值类型对象取出来转换使用时,就是在拆箱