C#集合.docx

上传人:b****6 文档编号:5027826 上传时间:2022-12-12 格式:DOCX 页数:19 大小:26.59KB
下载 相关 举报
C#集合.docx_第1页
第1页 / 共19页
C#集合.docx_第2页
第2页 / 共19页
C#集合.docx_第3页
第3页 / 共19页
C#集合.docx_第4页
第4页 / 共19页
C#集合.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C#集合.docx

《C#集合.docx》由会员分享,可在线阅读,更多相关《C#集合.docx(19页珍藏版)》请在冰豆网上搜索。

C#集合.docx

C#集合

C#集合

先来了解下集合的基本信息

1、BCL中集合类型分为泛型集合与非泛型集合。

2、非泛型集合的类和接口位于System.Collections命名空间。

3、泛型集合的类和接口位于System.Collections.Generic命名空间。

  ICollection接口是System.Collections命名空间中非泛型集合类的基接口,它继承自IEnumerable接口,从IEnumerable接口继承意味着实现该接口的实现类需要实现一个枚举器方法:

GetEnumerator,该方法返回IEnumerator类型的数据。

IDictionary和IList接口继承自ICollection作为更为专用的接口,其中IDictionary接口是键/值对接口,它的实现如HashTable类;而IList是值的集合,其成员可通过索引访问,如ArrayList类,次类集合与数组相比,可以认为是可变的集合,优点有,长度自动增长等。

IEnumerable和IEnumerable是所有集合或集合接口的基接口,所有集合接口或集合都继承、实现了它。

其中IEnumerable是最底层的接口。

在非泛型集合里存放的都是System.Object类型。

一、下面列出非泛型和泛型集合的接口

非泛型集合接口          泛型集合接口              说明

ICollection            ICollection             定义所有集合的大小(Count),枚举器(foreach)和同步(copyto)方法,继承自IEnumerable

IList               IList               表示可按照索引单独访问的一组对象(像数组一样)

IDictionary            IDictionary            表示键/值对的集合

IComparer             IComparer             定义类型为比较两个对象而实现的方法

IEqualityComparer         IEqualityComparer         定义方法以支持对象的相等比较

IEnumerable            IEnumerable            公开枚举器。

实现了该接口意味着允许foreach语句循环访问集合中的元素

IEnumerator            IEnumerator            支持在泛型集合上进行简单迭代

 下面来详细介绍各种集合接口和集合。

个人认为应该从根底说起。

先抱着MSDN来说IEnumerable,扩展方法就不说了,扩展方法跳过,留到学Linq的时候再说。

1、IEnumerable接口就一个方法,没有属性。

  方法            说明 

GetEnumerator        返回一个循环访问集合的枚举数。

 实现或继承了该接口,就是为了这个方法,可以foreach遍历。

 

2、IEnumerable接口也一样,也是就一个方法,没有属性。

  方法            说明

 GetEnumerator         返回一个循环访问集合的枚举数。

 3、ICollection接口

  方法            说明

  CopyTo          从特定的Array索引处开始,将ICollection的元素复制到一个Array中。

  GetEnumerator      返回一个循环访问集合的枚举数。

(继承自IEnumerable。

  属性

  Count            获取ICollection中包含的元素数。

原来Count的源头在这里。

  IsSynchronized       获取一个值,该值指示是否同步对ICollection的访问(线程安全)。

  SyncRoot          获取可用于同步ICollection访问的对象。

 4、ICollection

  方法               说明

  Count              获取ICollection<(Of<(T>)>)中包含的元素数。

  IsReadOnly           获取一个值,该值指示ICollection<(Of<(T>)>)是否为只读。

   属性

  Add               将某项添加到ICollection<(Of<(T>)>)中。

  Clear               从ICollection<(Of<(T>)>)中移除所有项。

  Contains             确定ICollection<(Of<(T>)>)是否包含特定值。

  CopyTo             从特定的Array索引开始,将ICollection<(Of<(T>)>)的元素复制到一个Array中。

  GetEnumerator         已重载。

  Remove             从ICollection<(Of<(T>)>)中移除特定对象的第一个匹配项。

 这个ICollect,才开始有点集合的影子了,可以Add、Clear了,怪不得它作为泛型集合接口的基类。

 5、IList

  IList继承了ICollection和IEnumerable

  方法               说明

Add               将某项添加到IList中。

Clear              从IList中移除所有项。

Contains            确定IList是否包含特定值。

CopyTo             从特定的Array索引处开始,将ICollection的元素复制到一个Array中。

(继承自ICollection。

GetEnumerator         返回一个循环访问集合的枚举数。

(继承自IEnumerable。

IndexOf             确定IList中特定项的索引。

Insert             将一个项插入指定索引处的IList。

Remove            从IList中移除特定对象的第一个匹配项。

RemoveAt           移除指定索引处的IList项。

  属性

Count              获取ICollection中包含的元素数。

(继承自ICollection。

IsFixedSize            获取一个值,该值指示IList是否具有固定大小。

IsReadOnly            获取一个值,该值指示IList是否为只读。

IsSynchronized          获取一个值,该值指示是否同步对ICollection的访问(线程安全)。

(继承自ICollection。

Item               获取或设置指定索引处的元素。

SyncRoot            获取可用于同步ICollection访问的对象。

(继承自ICollection。

可以看到,在不断的继承过程中,这些接口不断地添加自己的东西,越继承越多,越继承越多。

 6、IList

  IList继承了ICollection,IEnumerable,IEnumerable

方法              说明

Add              将某项添加到ICollection<(Of<(T>)>)中。

(继承自ICollection<(Of<(T>)>)。

Clear             从ICollection<(Of<(T>)>)中移除所有项。

(继承自ICollection<(Of<(T>)>)。

Contains           确定ICollection<(Of<(T>)>)是否包含特定值。

(继承自ICollection<(Of<(T>)>)。

CopyTo            从特定的Array索引开始,将ICollection<(Of<(T>)>)的元素复制到一个Array中。

(继承自ICollection<(Of<(T>)>)。

GetEnumerator        已重载。

IndexOf            确定IList<(Of<(T>)>)中特定项的索引。

Insert             将一个项插入指定索引处的IList<(Of<(T>)>)。

Remove            从ICollection<(Of<(T>)>)中移除特定对象的第一个匹配项。

(继承自ICollection<(Of<(T>)>)。

RemoveAt           移除指定索引处的IList<(Of<(T>)>)项。

   属性

Count             获取ICollection<(Of<(T>)>)中包含的元素数。

(继承自ICollection<(Of<(T>)>)。

IsReadOnly          获取一个值,该值指示ICollection<(Of<(T>)>)是否为只读。

(继承自ICollection<(Of<(T>)>)。

Item              获取或设置指定索引处的元素。

  同样,在不断的继承中,增加了新的东西,功能也越来越强大,支持索引获取和设置就是IList这个源头的。

一直弄不明白,NHibernate为什么会选择这个接口来返回数据,其实这个接口的东西够用了。

7、IDictionary接口

  IDictionary是最底层出现的键/值对集合了,相当于值集合中的ICollection

  方法            说明

Add            已重载。

Clear            从ICollection<(Of<(T>)>)中移除所有项。

(继承自ICollection<(Of<(T>)>)。

Contains          确定ICollection<(Of<(T>)>)是否包含特定值。

(继承自ICollection<(Of<(T>)>)。

ContainsKey        确定IDictionary<(Of<(TKey,TValue>)>)是否包含具有指定键的元素。

CopyTo          从特定的Array索引开始,将ICollection<(Of<(T>)>)的元素复制到一个Array中。

(继承自ICollection<(Of<(T>)>)。

GetEnumerator       已重载。

Remove          已重载。

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

  属性

Count           获取ICollection<(Of<(T>)>)中包含的元素数。

(继承自ICollection<(Of<(T>)>)。

IsReadOnly         获取一个值,该值指示ICollection<(Of<(T>)>)是否为只读。

(继承自ICollection<(Of<(T>)>)。

Item            获取或设置具有指定键的元素。

Keys            获取包含IDictionary<(Of<(TKey,TValue>)>)的键的ICollection<(Of<(T>)>)。

Values           获取包含IDictionary<(Of<(TKey,TValue>)>)中的值的ICollection<(Of<(T>)>)。

该接口提供的功能和ICollection差不多,其实就是键/值对的开宗立派者。

 8、IDictionary

 方法              说明

Add               在IDictionary对象中添加一个带有所提供的键和值的元素。

Clear              从IDictionary对象中移除所有元素。

Contains            确定IDictionary对象是否包含具有指定键的元素。

CopyTo             从特定的Array索引处开始,将ICollection的元素复制到一个Array中。

(继承自ICollection。

GetEnumerator         已重载。

Remove             从IDictionary对象中移除带有指定键的元素。

   属性

Count              获取ICollection中包含的元素数。

(继承自ICollection。

IsFixedSize           获取一个值,该值指示IDictionary对象是否具有固定大小。

IsReadOnly           获取一个值,该值指示IDictionary对象是否为只读。

IsSynchronized         获取一个值,该值指示是否同步对ICollection的访问(线程安全)。

(继承自ICollection。

Item              获取或设置具有指定键的元素。

Keys              获取ICollection对象,它包含IDictionary对象的键。

SyncRoot            获取可用于同步ICollection访问的对象。

(继承自ICollection。

Values              获取ICollection对象,它包含IDictionary对象中的值。

9、ISet

  ISet同样是继承自ICollection,IEnumerable,IEnumerable

方法            说明

Add(T)          将某项添加到ICollection中。

(继承自ICollection

Add(T)          向当前集内添加元素,并返回一个指示是否已成功添加元素的值。

Clear            从ICollection中移除所有项。

(继承自ICollection

Contains         确定ICollection是否包含特定值。

(继承自ICollection

CopyTo           从特定的Array索引开始,将ICollection的元素复制到一个Array中。

(继承自ICollection

ExceptWith        从当前集内移除指定集合中的所有元素。

GetEnumerator()     返回一个循环访问集合的枚举数。

(继承自IEnumerable。

GetEnumerator()     返回一个循环访问集合的枚举器。

(继承自IEnumerable

IntersectWith      修改当前集,使该集仅包含指定集合中也存在的元素。

IsProperSubsetOf    确定当前的设置是否正确(严格)指定集合的子集。

IsProperSupersetOf    确定当前的设置是否正确(严格)指定集合中的超集。

IsSubsetOf         确定一个集是否为指定集合的子集。

IsSupersetOf       确定当前集是否为指定集合的超集。

Overlaps         确定当前集是否与指定的集合重叠。

Remove          从ICollection中移除特定对象的第一个匹配项。

(继承自ICollection

SetEquals         确定当前集与指定的集合中是否包含相同的元素。

SymmetricExceptWith  修改当前集,使该集仅包含当前集或指定集合中存在的元素(但不可包含两者共有的元素)。

UnionWith        修改当前设置,以使其包含当前集或指定的集合中的所有元素。

 记住这些接口之间的关系,其实是非常重要的,方法和属性记不全也无所谓,但是需要记住各自提供的功能,以及继承关系。

 先说IComparer接口,这个接口就一个方法,用于如何比较两个对象

publicclassStringLengthComparer:

IComparer

{

publicintCompare(strings1,strings2)

{

if(s1.Length>s2.Length)

{

return

(1);

}

elseif(s1.Length

{

return

(2);

}

else

{

return(0);

}

}

}

说完了集合接口,现在开始说集合。

1、ArrayList

  ArrayList实现了IList、ICollection、IEnumerable接口。

  ArrayList与Array的名字很相似,现在来比较一下两者的异同。

  相同点:

  

(1)、两者都实现了IList、ICollection、IEnumerable接口。

  

(2)、两者都可以使用整数索引访问集合中的元素,包括读取和赋值,且集合中的索引都从0开始。

  不同点:

  

(1)、ArrayList是集合,而Array是数组。

  

(2)、ArrayList是具体类,Array是抽象类。

  (3)、数组必须在实例化时指定元素的数量,该数量一旦确定就不可以更改了,而ArrayList扩展了这一点,当实例化一个ArrayList实例时可以不指定集合元素数(有默认初始容量),当然你也可以指定初始容量。

  (4)、获取数组的元素数时使用Length属性,而获取ArrayList集合的元素数时使用Count属性。

  (5)、数组可以有多维,而ArrayList只能是一维。

来看ArrayList具体提供的功能

属性              说明

Capacity            获取或设置ArrayList可包含的元素数。

Count             获取ArrayList中实际包含的元素数。

IsFixedSize           获取一个值,该值指示ArrayList是否具有固定大小。

IsReadOnly           获取一个值,该值指示ArrayList是否为只读。

IsSynchronized         获取一个值,该值指示是否同步对ArrayList的访问(线程安全)。

Item               获取或设置指定索引处的元素。

SyncRoot            获取可用于同步ArrayList访问的对象。

方法

Adapter             为特定的IList创建ArrayList包装。

Add               将对象添加到ArrayList的结尾处。

AddRange            将ICollection的元素添加到ArrayList的末尾。

BinarySearch          已重载。

使用对分检索算法在已排序的ArrayList或它的一部分中查找特定元素。

Clear              从ArrayList中移除所有元素。

Clone              创建ArrayList的浅表副本。

Contains            确定某元素是否在ArrayList中。

CopyTo             已重载。

将ArrayList或它的一部分复制到一维数组中。

FixedSize            已重载。

返回具有固定大小的列表包装,其中的元素允许修改,但不允许添加或移除。

GetEnumerator         已重载。

返回循环访问ArrayList的枚举数。

GetRange            返回ArrayList,它表示源ArrayList中元素的子集。

IndexOf             已重载。

返回ArrayList或它的一部分中某个值的第一个匹配项的从零开始的索引。

Insert              将元素插入ArrayList的指定索引处。

可在任意位置插入。

InsertRange           将集合中的某个元素插入ArrayList的指定索引处。

LastIndexOf           已重载。

返回ArrayList或它的一部分中某个值的最后一个匹配项的从零开始的索引。

ReadOnly            已重载。

返回只读的列表包装。

Remove            从ArrayList中移除特定对象的第一个匹配项。

RemoveAt            移除ArrayList的指定索引处的元素。

RemoveRange          从ArrayList中移除一定范围的元素。

Repeat             返回ArrayList,它的元素是指定值的副本。

Reverse            已重载。

将ArrayList或它的一部分中元素的顺序反转。

SetRange            将集合中的元素复制到ArrayList中一定范围的元素上。

Sort              已重载。

对ArrayList或它的一部分中的元素进行排序。

Synchronized           已重载。

返回同步的(线程安全)列表包装。

ToArray            已重载。

将ArrayList的元素复制到新数组中。

TrimToSize           将容量设置为ArrayList中元素的实际数目。

staticvoidMain(stri

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1