C# 的Queue 队列方法
[csharp] viewplaincopy/* 泛型类:Queue * 命名空间:System.Collections.Generic * 描述:表示对象的先进先出集合。 * 类型参数: T --指定队列中元素的类型 * 备注: * 队列容器中的项,只能从先进去的开始删除,不能无规则删除容器队列中的项,比如,不能直接删除
·
- /* 泛型类:Queue
- * 命名空间:System.Collections.Generic
- * 描述:表示对象的先进先出集合。
- * 类型参数: T --指定队列中元素的类型
- * 备注:
- * 队列容器中的项,只能从先进去的开始删除,不能无规则删除容器队列中的项,比如,不能直接删除第2个,或最后一个项,
- * 要删除第2项,只能先删除第一个项,然后才能删除原来的第2项,当前的第一项.(只能删除第一项!!!)
- * Queue在接收顺序存储消息方面非常游泳,以便于进行顺序处理.存储在Queue中的对象在一端插入,从另一端移除
- * Queue的容量是指Queue可以保存的元素数.默认初始容量为8.
- * 当向Queue添加元素时,将通过重新分配内部数组,根据需要自动增大容量,可以通过TrimExcess来减少容量.
- * Queue接受空引用作为引用类型的有效值并允许有重复的元素.
- */
- //示例如下:
- //示例1
- //创建一个具有默认容量的字符串队列,并使用Enqueue方法对字符串进行排队进入.
- //枚举队列元素,这不会更改队列的状态.
- //使用Dequeue方法使第一个字符串出列,使用Peek方法查找队列中的下一项,然后用Dequeue方法使其出列.
- //使用ToArray方法创建一个数组对象并将队列元素复制到该数组.
- //创建一个大小是队列大小两倍的数组,并使用CopyTo方法从数组中开始复制数组元素.
- //使用Contains方法显示字符串"four"在第一队列副本中,然后使用Clear方法清除此副本并由Count属性显示该队列为空.
- using System;
- using System.Collections.Generic;
- class Program
- {
- static void Main(string[] args)
- {
- //(1)创建队列容器对象,并依次排队进入此容器
- Queue<string> numbers = new Queue<string>();
- numbers.Enqueue("one");
- numbers.Enqueue("two");
- numbers.Enqueue("three");
- numbers.Enqueue("four");
- numbers.Enqueue("five");
- //(2)枚举队列元素
- foreach (string s in numbers)
- {
- Console.WriteLine(s);
- }
- //(3)使用Dequeue方法/返回队列头对象并移除,使用Peek方法返回队列头对象但不移除,然后用Dequeue方法使其出列
- Console.WriteLine("\nDequeuing '{0}'", numbers.Dequeue());//返回队列头对象并移除
- Console.WriteLine("Peek at next item to dequene:{0}", numbers.Peek());//返回队列头对象但不移除
- Console.WriteLine("Dequeuing '{0}'", numbers.Dequeue());
- //(4)使用ToArray方法创建一个数组对象并将队列元素复制到该数组.
- string[] strArray = numbers.ToArray();
- Console.WriteLine("\n数组对象:");
- foreach (string s in strArray)
- {
- Console.WriteLine(s);
- }
- //(5)由数组对象创建队列容器
- Queue<string> queueCopy = new Queue<string>(strArray);
- Console.WriteLine("\n由数组对象\"strArray\"创建的队列容器:");
- foreach (string s in queueCopy)
- {
- Console.WriteLine(s);
- }
- //(5)创建一个大小是队列大小两倍的数组,并使用CopyTo方法从数组中开始复制数组元素.
- string[] Array2 = new string[numbers.Count * 2];
- numbers.CopyTo(Array2, 0); //从队列容器索引0开始,将全部的内容都复制到数组对象中
- Queue<string> queueCopy2 = new Queue<string>(Array2);
- Console.WriteLine("\n由数组对象\"Array2\"创建的队列容器:");
- foreach (string s in queueCopy2)
- {
- Console.WriteLine(s);
- }
- //(6)使用Contains方法显示字符串"four"在第一队列副本中,然后使用Clear方法清除此副本并由Count属性显示该队列为空.
- Console.WriteLine("\nqueueCopy.Contains(\"four\")={0}",queueCopy.Contains("four"));//确定某元素是否在队列中
- Console.WriteLine("queueCopy清除前元素个数:" + queueCopy.Count);
- queueCopy.Clear();
- Console.WriteLine("queueCopy清除后元素个数:"+queueCopy.Count);
- Console.Read();
- }
- }
更多推荐
已为社区贡献1条内容
所有评论(0)