C#高级(九)C#数据结构 , 集合

发布时间:2009-1-14浏览:

核心提示:C#高级(九)C#数据结构 , 集合

一、集合的基本概念 在.NET中,对于数据结构的支持,即把许多类似的对象组合起来。最简单的数据结构就是数组。 集合表示一组可以通过遍历每个元素来访问的的一组对象,特别是可以使用foreach循环来访问他们。对象如果可以提供相关对象的引用,就是一个集合。称为 使用foreach循环是集合的主要目的,集合没有提供其他特性。 二、数组列表。 数组列表类似数组,但数组列表是可以增大的。数组在规定的大小后,就不可以再增加了,但数组列表可以。 比如ArrayListarrayListTest=newArraryList(10);该句创建了一个大小为10的ArraryList对象,当我们再为其添加第11项时,其容量会自动扩大1倍,也就变成了20,而原来的对象会被添加上垃圾收集器的标记。 为其添加对象的方法是.Add() 比如:arrayListTest.Add(“gosoa.com.cn”);               我们来完整的看个例子。   Copycode usingSystem; usingSystem.Collections; namespacegosoa.com.cn {             classTest         {             staticvoidMain()             {                 ArrayListarrayTest=newArrayList(4);                 arrayTest.Add("www.");                 arrayTest.Add("cccbbs.");                 arrayTest.Add("net.");                 foreach(stringiteminarrayTest)                 {                         Console.Write(item);                 }                 Console.WriteLine("\n"+arrayTest.Capacity.ToString());                 arrayTest.Add("url");                 Console.WriteLine(arrayTest.Capacity.ToString());             }         } } 注意,在使用ArrayList之前,要引入System.Collections这个命名空间。 在本例中,ArrayListarrayTest=newArrayList(4);我们定义了一个容量为4的ArrayList实例,然后给其添加了4个选项,并且最后打印了出来。arrayTest.Capacity是用来输出ArrayList容量的。上例中输出的结果是 www.cccbbs.net 4 8 为什么最后输出的是8呢?因为起初定义的arrayTest容量是4,当最后arrayTest.Add("url");的时候,已经是在添加第五个选项了,这时,arrayTest的容量就会增加一倍。       ArrayList还有Insert(),RemoveAt(),AddRange(),RemoveRange()方法。 我们来以例子学习。   Copycode usingSystem; usingSystem.Collections; namespacegosoa.com.cn {             classTest         {             staticvoidMain()             {                 ArrayListarrayTest=newArrayList(3);                 arrayTest.Add("www.");                 arrayTest.Add("cccbbs.");                 arrayTest.Add("net.");                               foreach(stringiteminarrayTest)                 {                         Console.Write(item);                 }                 Console.WriteLine("\n\n");                 //此时输出                 //[url]www.cccbbs.net[/url]                                  //在第一个选项前面插入一项                 arrayTest.Insert(0,"http://");                 foreach(stringiteminarrayTest)                 {                         Console.Write(item);                 }                 Console.WriteLine("\n\n");                 //添加个http后输出如下                 //[url]http://www.gosoa.com.cn[/url]                               //新建立一个字符串数组                 string[]stringArr=newstring[4];                 stringArr[0]="\n";                 stringArr[1]="www.";                 stringArr[2]="cccbbs.";                 stringArr[3]="net";                                  //将整个字符串数组添加进arrayTest                 arrayTest.AddRange(stringArr);                 foreach(stringiteminarrayTest)                 {                         Console.Write(item);                 }                 Console.WriteLine("\n\n");                 //添加进字符串数组后输出结果如下                 //[url]http://www.cccbbs.net[/url]                 //[url]www.cccbbs.net[/url]                 //从arrayTest的第四项开始,删除4个选项                 arrayTest.RemoveRange(3,3);                 foreach(stringiteminarrayTest)                 {                         Console.Write(item);                 }                               //删除后输出的就只是  [url]http://www.cccbbs.net[/url]了。             }         } } 在上例中,注释已经非常明确了。如果还有不明白的,可以留言给我。 三、Stack类(栈)       栈是另外一种集合。适合于处理应用程序使用完后就删除的临时数据项。       在栈里,存储和取出的顺序是先进后出,或者说后进先出。       在stack里面,元素是使用Push()方法放入栈,使用Pop()方法弹出栈外。我们来看个例子。   Copycode usingSystem; usingSystem.Collections; namespacegosoa.com.cn {             classTest         {             staticvoidMain()             {                 StackstackTest=newStack();                 //注意这里添加的顺序。                 stackTest.Push("cn");                   stackTest.Push("com.");                 stackTest.Push("gosoa.");                 stackTest.Push("www.");                 foreach(stringiteminstackTest)                 {                         Console.Write(item);                 }                 Console.WriteLine("\n\n");                 //此时输出[url]www.gosoa.com.cn[/url]并非cncom.gosoa.www                 stackTest.Pop();                 foreach(stringiteminstackTest)                 {                         Console.Write(item);                 }                 //此时输出gosoa.com.cn             }         } } 在上例中,展示了怎样使用Push()和Pop()方法。但要注意,push的顺序。 而且在调用Pop()方法后,是删除了最后push()的那个元素。所以输出了gosoa.com.cn 四、Queue类。       和Stack类似,只是Queue先进先出,后进后出。与Stack相反。例子和上面的一样,只需稍做修改。 usingSystem; usingSystem.Collections; namespacegosoa.com.cn {             classTest         {             staticvoidMain()             {                 QueuequeueTest=newQueue();                 //注意这里添加的顺序。                 queueTest.Enqueue("cn");                     queueTest.Enqueue("com.");                 queueTest.Enqueue("gosoa.");                 queueTest.Enqueue("www.");                 foreach(stringiteminqueueTest)                 {                         Console.Write(item);                 }                 Console.WriteLine("\n\n");                 //此时输出  cncom.gosoa.www并非www.gosoa.com.cn                 queueTest.Dequeue();                 foreach(stringiteminqueueTest)                 {                         Console.Write(item);                 }                 //此时输出com.gosoa.www             }         } } Queue使用Enqueue添加元素,使用Dequeue删除元素。  
前一篇:定做程序设计
后一篇:服务器系统维护与安全配置
分享到: