C#高级(九)C#数据结构 , 集合
来源:互联网 发布:韩国健美81号seo rina 编辑:程序博客网 时间:2024/04/29 05:13
一、集合的基本概念
在.NET中,对于数据结构的支持,即把许多类似的对象组合起来。最简单的数据结构就是数组。
集合表示一组可以通过遍历每个元素来访问的的一组对象,特别是可以使用foreach循环来访问他们。对象如果可以提供相关对象的引用,就是一个集合。称为
使用foreach循环是集合的主要目的,集合没有提供其他特性。
二、数组列表。
数组列表类似数组,但数组列表是可以增大的。数组在规定的大小后,就不可以再增加了,但数组列表可以。
比如 ArrayList arrayListTest=newArraryList(10); 该句创建了一个大小为10的ArraryList对象,当我们再为其添加第11项时,其容量会自动扩大1倍,也就变成了20,而原来的对象会被添加上垃圾收集器的标记。
为其添加对象的方法是 .Add()
比如:arrayListTest.Add(“gosoa.com.cn”);
我们来完整的看个例子。
- using System;
- using System.Collections;
- namespace gosoa.com.cn
- {
- class Test
- {
- static void Main()
- {
- ArrayList arrayTest = new ArrayList(4);
- arrayTest.Add("www.");
- arrayTest.Add("gosoa.");
- arrayTest.Add("com.");
- arrayTest.Add("cn");
- foreach(string item in arrayTest)
- {
- Console.Write(item);
- }
- Console.WriteLine("/n"+arrayTest.Capacity.ToString());
- arrayTest.Add("url");
- Console.WriteLine(arrayTest.Capacity.ToString());
- }
- }
- }
注意,在使用ArrayList之前,要引入System.Collections 这个命名空间。
在本例中,ArrayList arrayTest = new ArrayList(4); 我们定义了一个容量为4的ArrayList实例,然后给其添加了4个选项,并且最后打印了出来。arrayTest.Capacity 是用来输出ArrayList容量的。上例中 输出的结果是
www.gosoa.com.cn
4
8
为什么最后输出的是8呢?因为起初定义的arrayTest容量是4,当最后arrayTest.Add("url");的时候,已经是在添加第五个选项了,这时,arrayTest的容量就会增加一倍。
ArrayList还有Insert(),RemoveAt(),AddRange(),RemoveRange()方法。
我们来以例子学习。
- using System;
- using System.Collections;
- namespace gosoa.com.cn
- {
- class Test
- {
- static void Main()
- {
- ArrayList arrayTest = new ArrayList(4);
- arrayTest.Add("www.");
- arrayTest.Add("gosoa.");
- arrayTest.Add("com.");
- arrayTest.Add("cn");
- foreach(string item in arrayTest)
- {
- Console.Write(item);
- }
- Console.WriteLine("/n /n");
- //此时输出
- // www.gosoa.com.cn
- //在第一个选项前面插入一项
- arrayTest.Insert(0,"http://");
- foreach(string item in arrayTest)
- {
- Console.Write(item);
- }
- Console.WriteLine("/n /n");
- //添加个http后 输出 如下
- // http://www.gosoa.com.cn
- //新建立一个字符串数组
- string [] stringArr=new string[4];
- stringArr[0]="/n";
- stringArr[1]="www.";
- stringArr[2]="cnblogs.";
- stringArr[3]="com";
- //将整个字符串数组添加进arrayTest
- arrayTest.AddRange(stringArr);
- foreach(string item in arrayTest)
- {
- Console.Write(item);
- }
- Console.WriteLine("/n /n");
- //添加进 字符串 数组后 输出结果如下
- // http://www.gosoa.com.cn
- // www.cnblogs.com
- //从arrayTest的第四项开始,删除4个选项
- arrayTest.RemoveRange(4,4);
- foreach(string item in arrayTest)
- {
- Console.Write(item);
- }
- //删除后输出的就只是 http://www.gosoa.com.cn 了。
- }
- }
- }
在上例中 ,注释已经非常明确了。如果还有不明白的,可以留言给我。
三、Stack 类(栈)
栈是另外一种集合。适合于处理应用程序使用完后就删除的临时数据项。
在栈里,存储和取出的顺序是 先进后出,或者说 后进先出。
在stack里面,元素是使用Push()方法放入栈,使用Pop()方法弹出栈外。我们来看个例子。
- using System;
- using System.Collections;
- namespace gosoa.com.cn
- {
- class Test
- {
- static void Main()
- {
- Stack stackTest = new Stack();
- //注意这里添加的顺序。
- stackTest.Push("cn");
- stackTest.Push("com.");
- stackTest.Push("gosoa.");
- stackTest.Push("www.");
- foreach(string item in stackTest)
- {
- Console.Write(item);
- }
- Console.WriteLine("/n /n");
- //此时输出 www.gosoa.com.cn 并非 cncom.gosoa.www
- stackTest.Pop();
- foreach(string item in stackTest)
- {
- Console.Write(item);
- }
- //此时输出 gosoa.com.cn
- }
- }
- }
在上例中,展示了怎样使用Push()和Pop()方法。但要注意,push的顺序。
而且在调用Pop()方法后,是删除了最后push()的那个元素。所以输出了 gosoa.com.cn
四、Queue类。
和Stack类似,只是Queue先进先出,后进后出。与Stack相反。例子和上面的一样,只需稍做修改。
- using System;
- using System.Collections;
- namespace gosoa.com.cn
- {
- class Test
- {
- static void Main()
- {
- Queue queueTest = new Queue();
- //注意这里添加的顺序。
- queueTest.Enqueue("cn");
- queueTest.Enqueue("com.");
- queueTest.Enqueue("gosoa.");
- queueTest.Enqueue("www.");
- foreach(string item in queueTest)
- {
- Console.Write(item);
- }
- Console.WriteLine("/n /n");
- //此时输出 cncom.gosoa.www 并非 www.gosoa.com.cn
- queueTest.Dequeue();
- foreach(string item in queueTest)
- {
- Console.Write(item);
- }
- //此时输出 com.gosoa.www
- }
- }
- }
Queue使用Enqueue 添加元素,使用Dequeue 删除元素。
- C#高级(九)C#数据结构 , 集合
- C#集合类(数据结构)
- C#高级编程 集合
- C#基础-C#数据结构,集合
- C#数据结构,集合
- C#数据结构,集合
- C#高级技术1 集合类(2)集合框架
- C#高级程序设计(九)——表达式树
- C#数据集合与数据结构
- C#高级技术1 集合类(1)
- C#高级编程五十八天----并行集合
- c#高级
- 高级C#
- C# 集合(Collection)
- C#进阶教程(九)
- C#内存管理(九)
- C#高级(八)委托
- C#集合
- 小郭语录
- 编写服务端可能会遇到的第一个问题
- 得到和失去焦点
- 查询操作、存储过程、函数调用中使用行处理器-bboss persistent框架行处理器使用-1
- Linux 不能连接 JMX 问题
- C#高级(九)C#数据结构 , 集合
- MooTools中文介绍
- 我、WarGrey、战斗暴龙
- How to config (no)archivelog mode and manage archive log files by RMAN (Updated to 10G)
- 架构师(试刊第三期)免费下载
- 写出漂亮代码的七种方法
- DWR推技术在开发中需要注意的ScriptSession问题
- MS-SQLSERVER中的MSDTC不可用解决方法
- VB.net中实现打印窗体