注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

数组、索引器和集合(八)  

2010-12-27 14:54:30|  分类: C# & .NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

4.队列

队列是按先进先出的方式来处理元素的集合。

.NET System.Collections 命名空间中有非泛型类Queue,在System.Collections.Generic 命名空间中有泛型类Queue<T>。这两个类的功能非常类似,但泛型类是强类型化的,定义了类型T,而非泛型类基于Object 类型。队列与列表的主要区别是队列没有执行IList 接口。所以不能用索引器访问队列。队列只允许两种操作:使用Enqueue()方法添加元素,该元素会放在队列的尾部,使用Dequeue()方法从队列的头部获取元素。如下图:

数组、索引器和集合(八) - Castor - 趁年轻,多折腾~~

 

队列的重要属性和方法如下:

属性或方法

说明

Count

获取队列中元素数目

Clear()

删除队列中所有对象

Contains()

确定队列中是否存在某个元素

CopyTo()

将队列元素复制到一个已存在的一维数组中

Dequeue()

删除和返回队列中的第一个对象(入列)

Enqueue()

在队列末尾添加一个对象(出列)

GetEnumerator()

返回队列的枚举

Peek()

返回队列中的第一个对象,但不删除

ToArray()

将元素复制到新数组中去

下面的一段代码演示简单的队列操作:

Queue<int> iQ = new Queue<int>(10);

for (int i = 0; i < 10; i++)

{

    iQ.Enqueue(i + 1);

}

iQ.Dequeue();//1出列

Console.WriteLine(iQ.Dequeue().ToString());//显示

运行完上面这段代码之后,队列中将只有8个元素,如下图:

 

数组、索引器和集合(八) - Castor - 趁年轻,多折腾~~

 

如果使用Peek方法,同样会返回队列中的第一个元素,但是并不从队列中删除该元素,通常用来查询具有某种特征的元素。

队列的遍历

Queue类是可以枚举的,因此可以将其传递给某个方法,该方法由IEnumerable接口提供,示例如下:

using System;

using System.Collections.Generic;

using System.Text;

namespace Castor

{

    class Test

    {

        //主程序入口

        static void Main(string[] args)

        {

            Queue<int> iQ = new Queue<int>(10);

            for (int i = 0; i < 10; i++)

            {

                iQ.Enqueue(i + 1);

            }

            PrintQueue(iQ);

            Console.Read();

        }

        public static void PrintQueue(IEnumerable<int> MyColl)

        {

            //返回一个循环访问集合的枚举数

            IEnumerator<int> MyIEnum = MyColl.GetEnumerator();

            while (MyIEnum.MoveNext())

            {

                //使用下面这句会报错,因为Enumerator<int>.Current是只读的

                //MyIEnum.Current += 1;

                Console.Write("{0} ", MyIEnum.Current);

            }

            Console.WriteLine();

        }

    }

}

GetEnumerator()是所有IEnumerable类的方法,该方法返回一个Enumerator,用来枚举集合中的所有对象。

  评论这张
 
阅读(454)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016