出处:http://www.cnblogs.com/feisky/archive/2009/10/29/1591956.html
System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。
System.Collections.Generic 命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。
System.Collections.Specialized 命名空间包含专用的和强类型的集合,例如,链接的列表词典、位向量以及只包含字符串的集合。在System.Collections命名空间中提供了许多接口:
- IEnumerable循环集合项目
- ICollection可以获取集合中项目个数
- IList项目列表
- IDictionary提供了键码索引
(一)ArrayList 类:使用大小可按需动态增加的数组。
(二)Queue:队列,表示对象的先进先出集合。Enqueue方法入队列,Dequeue方法出队列。
(三)Stack:栈,表示对象的简单的后进先出非泛型集合。Push方法入栈,Pop方法出栈。
(四)哈希表
在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对.
二、哈希表的简单操作
在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value);
在哈希表中去除某个key/value键值对:HashtableObject.Remove(key);
从哈希表中移除所有元素: HashtableObject.Clear();
判断哈希表是否包含特定键key: HashtableObject.Contains(key);
下面控制台程序将包含以上所有操作:
遍历哈希表需要用到DictionaryEntry Object,代码如下:
对哈希表进行排序在这里的定义是对key/value键值对中的key按一定规则重新排列,但是实际上这个定义是不能实现的,因为我们无法直接在Hashtable进行对key进行重新排列,如果需要Hashtable提供某种规则的输出,可以采用一种变通的做法:
(五)SortedList类:表示键/值对的集合,与哈希表类似,区别在于SortedList中的Key数组排好序的。
(六)Dictionary 泛型集合
很多非泛型集合类都有对应的泛型集合类,下面是常用的非泛型集合类以及对应的泛型集合类:
非泛型集合类 | 泛型集合类 |
ArrayList | List<T> |
HashTable | DIctionary<T> |
Queue | Queue<T> |
Stack | Stack<T> |
SortedList | SortedList<T> |
下面是简单的例子,包括声明,填充键值对,移除键值对,遍历键值对
常用的属性和方法如下:
常用属性 | 属性说明 |
获取用于确定字典中的键是否相等的IEqualityComparer。 | |
获取包含在Dictionary中的键/值对的数目。 | |
获取或设置与指定的键相关联的值。 | |
获取包含Dictionary中的键的集合。 | |
获取包含Dictionary中的值的集合。 | |
常用的方法 | 方法说明 |
将指定的键和值添加到字典中。 | |
从Dictionary中移除所有的键和值。 | |
确定Dictionary是否包含指定的键。 | |
确定Dictionary是否包含特定值。 | |
返回循环访问Dictionary的枚举数。 | |
用作特定类型的哈希函数。GetHashCode适合在哈希算法和数据结构(如哈希表)中使用。 (从Object继承。) | |
实现System.Runtime.Serialization.ISerializable接口,并返回序列化Dictionary实例所需的数据。 | |
实现System.Runtime.Serialization.ISerializable接口,并在完成反序列化之后引发反序列化事件。 | |
确定指定的Object实例是否是相同的实例。(从Object继承。) | |
从Dictionary中移除所指定的键的值。 | |
获取与指定的键相关联的值。 |