• C# Queue<>


    [csharp] view plaincopy
    1. /* 泛型类:Queue 
    2.  * 命名空间:System.Collections.Generic 
    3.  * 描述:表示对象的先进先出集合。 
    4.  * 类型参数:    T    --指定队列中元素的类型 
    5.  * 备注: 
    6.  * 队列容器中的项,只能从先进去的开始删除,不能无规则删除容器队列中的项,比如,不能直接删除第2个,或最后一个项, 
    7.  *        要删除第2项,只能先删除第一个项,然后才能删除原来的第2项,当前的第一项.(只能删除第一项!!!) 
    8.  * Queue在接收顺序存储消息方面非常游泳,以便于进行顺序处理.存储在Queue中的对象在一端插入,从另一端移除 
    9.  * Queue的容量是指Queue可以保存的元素数.默认初始容量为8. 
    10.  * 当向Queue添加元素时,将通过重新分配内部数组,根据需要自动增大容量,可以通过TrimExcess来减少容量. 
    11.  * Queue接受空引用作为引用类型的有效值并允许有重复的元素. 
    12.  */  
    13. //示例如下:  
    14. //示例1  
    15. //创建一个具有默认容量的字符串队列,并使用Enqueue方法对字符串进行排队进入.  
    16. //枚举队列元素,这不会更改队列的状态.  
    17. //使用Dequeue方法使第一个字符串出列,使用Peek方法查找队列中的下一项,然后用Dequeue方法使其出列.  
    18. //使用ToArray方法创建一个数组对象并将队列元素复制到该数组.  
    19. //创建一个大小是队列大小两倍的数组,并使用CopyTo方法从数组中开始复制数组元素.  
    20. //使用Contains方法显示字符串"four"在第一队列副本中,然后使用Clear方法清除此副本并由Count属性显示该队列为空.  
    21. using System;  
    22. using System.Collections.Generic;  
    23. class Program  
    24. {  
    25.     static void Main(string[] args)  
    26.     {  
    27.         //(1)创建队列容器对象,并依次排队进入此容器  
    28.         Queue<string> numbers = new Queue<string>();  
    29.         numbers.Enqueue("one");  
    30.         numbers.Enqueue("two");  
    31.         numbers.Enqueue("three");  
    32.         numbers.Enqueue("four");  
    33.         numbers.Enqueue("five");  
    34.         //(2)枚举队列元素  
    35.         foreach (string s in numbers)  
    36.         {  
    37.             Console.WriteLine(s);  
    38.         }  
    39.         //(3)使用Dequeue方法/返回队列头对象并移除,使用Peek方法返回队列头对象但不移除,然后用Dequeue方法使其出列  
    40.         Console.WriteLine("\nDequeuing '{0}'", numbers.Dequeue());//返回队列头对象并移除  
    41.         Console.WriteLine("Peek at next item to dequene:{0}", numbers.Peek());//返回队列头对象但不移除  
    42.         Console.WriteLine("Dequeuing '{0}'", numbers.Dequeue());  
    43.         //(4)使用ToArray方法创建一个数组对象并将队列元素复制到该数组.  
    44.         string[] strArray = numbers.ToArray();  
    45.         Console.WriteLine("\n数组对象:");  
    46.         foreach (string s in strArray)  
    47.         {  
    48.             Console.WriteLine(s);  
    49.         }  
    50.         //(5)由数组对象创建队列容器  
    51.         Queue<string> queueCopy = new Queue<string>(strArray);  
    52.         Console.WriteLine("\n由数组对象\"strArray\"创建的队列容器:");  
    53.         foreach (string s in queueCopy)  
    54.         {  
    55.             Console.WriteLine(s);  
    56.         }  
    57.         //(5)创建一个大小是队列大小两倍的数组,并使用CopyTo方法从数组中开始复制数组元素.  
    58.         string[] Array2 = new string[numbers.Count * 2];  
    59.         numbers.CopyTo(Array2, 0);        //从队列容器索引0开始,将全部的内容都复制到数组对象中  
    60.          
    61.         Queue<string> queueCopy2 = new Queue<string>(Array2);  
    62.         Console.WriteLine("\n由数组对象\"Array2\"创建的队列容器:");  
    63.         foreach (string s in queueCopy2)         
    64.         {  
    65.             Console.WriteLine(s);  
    66.         }  
    67.         //(6)使用Contains方法显示字符串"four"在第一队列副本中,然后使用Clear方法清除此副本并由Count属性显示该队列为空.  
    68.         Console.WriteLine("\nqueueCopy.Contains(\"four\")={0}",queueCopy.Contains("four"));//确定某元素是否在队列中  
    69.         Console.WriteLine("queueCopy清除前元素个数:" + queueCopy.Count);  
    70.         queueCopy.Clear();  
    71.         Console.WriteLine("queueCopy清除后元素个数:"+queueCopy.Count);  
    72.         Console.Read();  
    73.     }  
    74. }  
  • 相关阅读:
    Linux内核分析--系统调用【转】
    Linux slab分配器【转】
    简化指令与复杂指令的区别【转】
    冯诺依曼体系结构与哈佛体系结构的区别【转】
    bzero, memset ,setmem 区别【转】
    写一个标准宏MIN,输入两个参数,返回较小的
    红黑树(一)之原理和算法的详细分析【转】
    socket心跳包机制总结【转】
    Linux文件时间详解ctime、mtime、atime【转】
    【转】图文并茂 Ubuntu使用Thunderbird方法指南
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/3110492.html
Copyright © 2020-2023  润新知