首页 > 代码库 > ,NET菜鸟基础学习之——集合类型

,NET菜鸟基础学习之——集合类型

刚刚接触.net一个月,细细的学,整理了一些别人空间上看到的资料,方便自己学习,如果大家有兴趣可以看一下。

     集合,表示可以通过遍历每个元素来访问的一组对象(特别是可使用foreach循环访问)一个集合包括多个元素,即有一个集合类对象和N个元素对因为任何集合类都实现了IEnumerable接口,所以任何集合类对象都有一个GetEnumerator()方法,该方法可以返回一个实现了 IEnumerator接口的对象,这个返回的IEnumerator对象既不是集合类对象,也不是集合的元素类对象,它是一个独立的类对象。通过这个对象,可以遍历访问集合类对象中的每一个元素对象。

1.System.Colloctions中表示集合的行为的接口有:
1)ICollection
定义所有集合的大小、枚举数和同步方法。派生于IEnumerable
它定义了集合类最基本的行为,所有的集合类都实现了这个接口(基接口)
但是它的行为太过基本:主要就是一个Count属性,单独实现它没有太大意义

2)IEnumerable
公开枚举数,该枚举数支持在集合上进行简单迭代
它只有一个方法 GetEnumerator(),该方法可以返回一个IEnumerator接口,通过它可以遍历集合
基本上所有的集合类都实现了这个接口

3)IList
IList实现是可排序且可按照索引访问其成员的值的集合,它本身实现了ICollection和IEnumerable接口
是所有列表的抽象基类。IList 实现有三种类别:只读、固定大小、可变大小。

4)IDictionary
IDictionary实现是键/值对的集合,它本身实现了ICollection和IEnumerable接口
是键/值对的集合的基接口。IDictionary 实现有三种类别:只读、固定大小、可变大小。
IDictionary可称为字典、映射或散列表,它根据键(任意类型)来访问值

2.System.Collections中可以直接使用的集合类有:
1)ArrayList
实现了接口:IList、ICollection、IEnumerable
只要集合未被修改,ArrayList 就可安全地同时支持多个读取器
随着向 ArrayList 中添加元素,容量通过重新分配按需自动增加(2倍增加)
如果需要建立一个对象数组,但不能预先知道数组的大小,就可以使用ArrayList
ArrayList把所有元素都当作object对象引用,因而在访问ArrayList的元素时要进行类型转换
优点:动态改变大小、灵活方便的插入和删除元素、可排序
缺点:插入时性能不如数组、不是强类型的

2)BitArray
实现了接口:ICollection、IEnumerable
管理位值的压缩数组。

3)Hashtable
实现了接口:IDictionary、ICollection、IEnumerable
可以向Hashtable中自由添加和删除元素,有些像ArrayList,但没有那么大的性能开销

4)SortedList
实现了接口:IDictionary、ICollection、IEnumerable
SortedLIst兼顾了ArrayList和Hashtable的优点,可按键值来排序

5)Queue
实现了接口:ICollection、IEnumerable
Queque是队列,先进先出的访问各个元素
可以调用Queque对象的GetEnumerator()方法,得到IEnumerator对象,来遍历队列中的各个元素

6)Stack
实现了接口:ICollection、IEnumerable
Stack是堆栈,后进先出的访问各个元素
可以调用Stack对象的GetEnumerator()方法,得到IEnumerator对象,来遍历堆栈中的各个元素

 

List的方法和属性 方法或属性 作用

Capacity 用于获取或设置List可容纳元素的数量。当数量超过容量时,这个值会自动增长。您可以设置这个值以减少容量,也可以调用trin()方法来减少容量以适合实际的元素数目。

Count 属性,用于获取数组中当前元素数量

Item( ) 通过指定索引获取或设置元素。对于List类来说,它是一个索引器。

Add( ) 在List中添加一个对象的公有方法

AddRange( ) 公有方法,在List尾部添加实现了ICollection接口的多个元素

BinarySearch( ) 重载的公有方法,用于在排序的List内使用二分查找来定位指定元素.

Clear( ) 在List内移除所有元素

Contains( ) 测试一个元素是否在List内

CopyTo( ) 重载的公有方法,把一个List拷贝到一维数组内

Exists( ) 测试一个元素是否在List内

Find( ) 查找并返回List内的出现的第一个匹配元素

FindAll( ) 查找并返回List内的所有匹配元素

GetEnumerator( ) 重载的公有方法,返回一个用于迭代List的枚举器

Getrange( ) 拷贝指定范围的元素到新的List内

IndexOf( ) 重载的公有方法,查找并返回每一个匹配元素的索引

Insert( ) 在List内插入一个元素

InsertRange( ) 在List内插入一组元素

LastIndexOf( ) 重载的公有方法,,查找并返回最后一个匹配元素的索引

Remove( ) 移除与指定元素匹配的第一个元素

RemoveAt( ) 移除指定索引的元素

RemoveRange( ) 移除指定范围的元素

Reverse( ) 反转List内元素的顺序

Sort( ) 对List内的元素进行排序

ToArray( ) 把List内的元素拷贝到一个新的数组内

trimToSize( ) 将容量设置为List中元素的实际数目

 

 Dictionary的方法和属性 方法或属性 作用

  Comparer:获取用于确定字典中的键是否相等的 IEqualityComparer。

  Count: 获取包含在 Dictionary中的键/值对的数目。

  Item: 获取或设置与指定的键相关联的值。

  Keys: 获取包含 Dictionary中的键的集合。

  Values:获取包含 Dictionary中的值的集合。

  Add: 将指定的键和值添加到字典中。

  Clear: 从 Dictionary中移除所有的键和值。

  ContainsKey:确定 Dictionary是否包含指定的键。

  ContainsValue: 确定 Dictionary是否包含特定值。             

  GetEnumerator:返回循环访问 Dictionary的枚举数。

  GetType: 获取当前实例的 Type。 (从 Object 继承。)

  Remove:从 Dictionary中移除所指定的键的值。

  ToString:返回表示当前 Object的 String。 (从 Object 继承。)

  TryGetValue:获取与指定的键相关联的值。

 

 HashTable的方法和属性 方法或属性 作用

 count  :获取Hashtable中的键值对数目。

 isFixedSize:获取一个值,该值指示是否具有固定大小

 isReadOnly:获取一个值,该值指示是否为只读。

 keys:获取包含Hashtable中的键的ICollection.

 values:获取Hashtalbe中的值得ICollection.

 add():将带有指定键和值的元素添加到HashTable中

 clear():从Hashtable中移除所有元素。

 contains():确定Hashtable中是否含有特定键。

 containsKey():确定Hashtable中是否含有特定键。

 containsValue():确定Hashtable中是否含有特定值。

 Remove():从Hashtable中移除带有指定的元素

 InsertRange():用于从指定位置开始添加一批元素,列表后面的元素依次往后移动

 clone():创建Hashtable的浅表副本

 getobjectdate():实现ISerializable接口,并返回序列化 Hashtable 所需的数据。

 

,NET菜鸟基础学习之——集合类型