c#(2)集合类,非泛型

1. 集合是一组对象的聚集,在程序设计中是一种重要的数据结构
2. 实际上集合使用一个对象来代表一组对象,在集合中的对象成为元素。
3. 集合类的元素类型是object,这意味着在集合中插入一个值是,他总是会进行装箱;
4. 从集合中移除一个值时,则必须进行强制类型的转换,从而对它进行拆箱。
5. 集合表示一组可以通过遍历每一个元素来访问的一组对象,特别是能通过foreach循环访问他们。
6. 对象如果可以提供相关对象的引用,就是一个集合,成为枚举,它可以遍历集合中的数据项。
IEnumerable接口
实现了IEnumerable接口的集合表明该集合能够以提供一个enumerator(枚举器)的对象,支持当前的遍历集合。
方法 描述
GetEnumerator() 遍历返回枚举对象
IEnumerator接口
实现了IEnumerator接口实现了从一个元素向另一个元素移动的方法,同时也可以随时返回初始处。只读。
方法 描述
MoveNext() 调整遍历指针移向集合的下一个元素,该方法返回一个布尔值,如果成功遍历到下一个元素的话返回TRUE,指针一处末尾,返回FALSE。
Reset() 设置指针指向的初始位置,即集合中第一个元素的前面。
Current() 返回集合中当前对象的引用。
ICollection接口
该接口是IEnumerable接口的子接口,定义了集合的大小、IEnumerator接口和同步方法
属性 描述
Count 该属性返回集合中元素的数目
方法 描述
CopyTo(Array array,int index) 该方法用于实现从集合中拷贝元素到另一个一维数组
SyncRoot和IsSynchronized:这些属性允许类实现线程安全的集合。
ArrayList类
属性 描述
Capacity 获取或设置ArrayList可包含的元素数
Count 获取ArrayList中实际包含的元素数
Item 获取或设置制定位置的元素。通过索引
注意:Capacity永远大于等于Count
方法 描述
Remove() 移除一个元素
Add() 在末尾添加一个元素
Insert() 插入一个元素
Clear() 从ArrayList对象中移除所有的元素
Contains() 确定某元素是否在ArrayList对象中
GetEnumerator() 返回循环访问ArrayList对象中的枚举数
IndexOf() 返回ArrayList对象或它一部分中某个值的第一个匹配项的从ling6kaishi的索引
RemoveAt() 移除ArrayList对象中指定索引出的元素
Reverse() 将ArrayList对象中的元素顺序进行反转
Sort() 将ArrayList对象中的元素进行排序
ToArray() 将ArrayList对象中的元素复制到新数组中
注意:不能在遍历一个ArrayList对象的foreach循环中使用Remove方法。
Queue类
属性 描述
Count 获取Queue中包含的元素数目
方法 描述
Clear() 从Queue中移除所有的对象
Dequeue() 移除并返回处于Queue开始处的对象
Enqueue() 将对象添加到Queue的结尾处素
Peek() 返回位于Queue开始处的对象,但是不删除它
Queue 实现了一个先入先出的(FIFO)机制。
Stack类
属性 描述
Count 获取Stack中包含的元素数目
方法 描述
Clear() 从Stack中移除所有的对象
Push() 将对象查处Stack的顶部
Pop() 删除并返回位于Stack顶部的对象
Peek() 返回位于Stack顶部的对象但不将其删除
Stack 实现了一个后入先出的(LIFO)机制。
Hashtable类
1. Hashtable不能包含重复的key,如果调用Add方法来添加一个Keys数组中已经 有的Key,就会抛出异常——除非使用方括号法添加一对key/value。为了测 试Hashtable中是否已经包含一个特定的key,可以使用ContainsKey方法
2. 使用foreach语句来遍历一个Hashtable时,会返回一个DictionaryEntry, DictionaryEntry类允许你通过key属性和value属性来访问数组中的key和value。
SortList类
1. 该类和Hashtable类非常相似,主要区别在于,在SortList中,Keys数组总是排好序的
2. 类似于Hashtable,一个SortList不能包含重复的key,使用foreach循环时返回 的是一个DictionaryEntry对象,然会DictionaryEntry对象根据key属性将排好序的方式返回。

 

泛型最常见的用途是泛型集合,命名空间System.Collections.Generic中包含了一些基于泛型的集合类,使用泛型集合类可以提高更高类型安全性,还有更高的性能,避免了非泛型集合的重复装箱和拆箱。

很多非泛型集合类都有对应的泛型集合类。

非泛型集合类     泛型集合类

ArrayList         List<T>

HashTable       Dictionary<T>

Queue             Queue<T>

Stack              Stack<T>

SortedList       SortedList<T>

一般用的最多我认为有ArrayList和HashTable。我们经常用HashTable来存储要写入到数据库或者返回的信息,在这之间要不断 的进行类型的转化,增加了系统装箱和拆箱的负担。如果我们操纵的数据类型相对确定的话,用Dictionary<TKey, TValue>集合类来存储数据就方便多了

posted @ 2012-06-04 01:33  RubbyZhang  阅读(293)  评论(0编辑  收藏  举报