C#集合(Collection)

集合(Collection)类是专门用于数据存储和检索的类。这些类提供了对栈(stack)、队列(queue)、列表(list)和哈希表(hash table) 的支持。大多数集合类实现了相同的接口。

集合(Collection)类服务于不同的目的,如为元素动态分配内存,基于索引访问列表项等等。这些类创建Object类的对象的集合。在C#中,Object类是所有数据类型的基类。

各种集合类和它们的用法

下面是各种常用的System.Collection命名空间的类。

类 描述和用法
动态数组(ArrayList)

它代表了可被单独索引的对象的有序集合。

它基本上可以替代一个数组。但是,与数组不同的是,可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序各项。

哈希表(Hashtable)

它使用键来访问集合中的元素。

当使用键访问元素时,则使用哈希表,而且可以识别一个有用的键值。哈希表中的每一项都有一个键、值对。键用于访问集合中的项目。

排序列表(SortedList)它可以使用索引来访问列表中的项。

排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(Hashtable)。集合中的各项总是按键值排序

堆栈(Stack)它代表了一个后进先出的对象集合。

当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素。

队列(Queue)它代表了一个先进先出的对象集合。

当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队

点阵列(BitArray)它代表了一个使用值 1 和 0 来表示的二进制数组。

当您需要存储位,但是事先不知道位数时,则使用点阵列。您可以使用整型索引从点阵列集合中访问各项,索引从零开始。

 C#动态数组(ArrayList)

动态数组(ArrayList)代表了可被单独索引的对象的有序集合。它基本上可以替代一个数组。但是,与数组不同的是,可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序各项。

ArrayList类的方法和属性

下表列出了ArrayList类的一些常用的属性:

属性描述
Capacity获取或设置 ArrayList 可以包含的元素个数。
Count获取 ArrayList 中实际包含的元素个数。
IsFixedSize获取一个值,表示 ArrayList 是否具有固定大小。
IsReadOnly获取一个值,表示 ArrayList 是否只读。
IsSynchronized获取一个值,表示访问 ArrayList 是否同步(线程安全)。
Item[Int32]获取或设置指定索引处的元素。
SyncRoot获取一个对象用于同步访问 ArrayList。

下表列出了ArrayList类的一些常用的方法:

序号方法名 & 描述
1public virtual int Add( object value );
在 ArrayList 的末尾添加一个对象。
2public virtual void AddRange( ICollection c );
在 ArrayList 的末尾添加 ICollection 的元素。
3public virtual void Clear();
从 ArrayList 中移除所有的元素。
4public virtual bool Contains( object item );
判断某个元素是否在 ArrayList 中。
5public virtual ArrayList GetRange( int index, int count );
返回一个 ArrayList,表示源 ArrayList 中元素的子集。
6public virtual int IndexOf(object);
返回某个值在 ArrayList 中第一次出现的索引,索引从零开始。
7public virtual void Insert( int index, object value );
在 ArrayList 的指定索引处,插入一个元素。
8public virtual void InsertRange( int index, ICollection c );
在 ArrayList 的指定索引处,插入某个集合的元素。
9public virtual void Remove( object obj );
从 ArrayList 中移除第一次出现的指定对象。
10public virtual void RemoveAt( int index );
移除 ArrayList 的指定索引处的元素。
11public virtual void RemoveRange( int index, int count );
从 ArrayList 中移除某个范围的元素。
12public virtual void Reverse();
逆转 ArrayList 中元素的顺序。
13public virtual void SetRange( int index, ICollection c );
复制某个集合的元素到 ArrayList 中某个范围的元素上。
14public virtual void Sort();
对 ArrayList 中的元素进行排序。
15public virtual void TrimToSize();
设置容量为 ArrayList 中元素的实际个数。

 实例:

C#哈希表(Hashtable)

Hashtable类代表了一系列基于键的哈希代码组织起来的键、值对。它使用键来访问集合中的元素。

使用键访问元素时,则使用哈希表,而且可以识别一个有用的键值。哈希值中的每一项都有一个键、值对。键用于访问集合中的项目。

Hashtable类的方法和属性

下表列出了Hashtable类的一些常用的属性:

属性描述
Count获取 Hashtable 中包含的键值对个数。
IsFixedSize获取一个值,表示 Hashtable 是否具有固定大小。
IsReadOnly获取一个值,表示 Hashtable 是否只读。
Item获取或设置与指定的键相关的值。
Keys获取一个 ICollection,包含 Hashtable 中的键。
Values获取一个 ICollection,包含 Hashtable 中的值。

下表列出了Hashtable类的一些常用的方法:

序号方法名 & 描述
1public virtual void Add( object key, object value );
向 Hashtable 添加一个带有指定的键和值的元素。
2public virtual void Clear();
从 Hashtable 中移除所有的元素。
3public virtual bool ContainsKey( object key );
判断 Hashtable 是否包含指定的键。
4public virtual bool ContainsValue( object value );
判断 Hashtable 是否包含指定的值。
5public virtual void Remove( object key );
从 Hashtable 中移除带有指定的键的元素。

实例:

C#排序列表(SortedList)

SortedList类代表了一系列按照键来排序的键/值对,这些键值对可以通过键和索引来访问。

排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果使用索引访问各项,则它是一个动态数组(ArrayList),如果使用键访问各项,则它是一个哈希表(Hashtable)。集合中的各项总是按键值排序。

SortedList类的方法和属性

下表列出了SortedList类的一些常用的属性:

属性描述
Capacity获取或设置 SortedList 的容量。
Count获取 SortedList 中的元素个数。
IsFixedSize获取一个值,表示 SortedList 是否具有固定大小。
IsReadOnly获取一个值,表示 SortedList 是否只读。
Item获取或设置与 SortedList 中指定的键相关的值。
Keys获取 SortedList 中的键。
Values获取 SortedList 中的值。

下表列出了SortedList类的一些常用的方法:

序号方法名 & 描述
1public virtual void Add( object key, object value );
向 SortedList 添加一个带有指定的键和值的元素。
2public virtual void Clear();
从 SortedList 中移除所有的元素。
3public virtual bool ContainsKey( object key );
判断 SortedList 是否包含指定的键。
4public virtual bool ContainsValue( object value );
判断 SortedList 是否包含指定的值。
5public virtual object GetByIndex( int index );
获取 SortedList 的指定索引处的值。
6public virtual object GetKey( int index );
获取 SortedList 的指定索引处的键。
7public virtual IList GetKeyList();
获取 SortedList 中的键。
8public virtual IList GetValueList();
获取 SortedList 中的值。
9public virtual int IndexOfKey( object key );
返回 SortedList 中的指定键的索引,索引从零开始。
10public virtual int IndexOfValue( object value );
返回 SortedList 中的指定值第一次出现的索引,索引从零开始。
11public virtual void Remove( object key );
从 SortedList 中移除带有指定的键的元素。
12public virtual void RemoveAt( int index );
移除 SortedList 的指定索引处的元素。
13public virtual void TrimToSize();
设置容量为 SortedList 中元素的实际个数。

C#堆栈(Stack)

堆栈(stack)代表了一个后进先出的对象集合。当需要对各项进行后进先出的访问时,则使用堆栈。当在列表中添加一项,称为推入元素,当从列表中移除一项时,称为弹出元素。

Stack类的方法和属性

下表列出了Stack类的一些常用的属性:

属性描述
Count获取 Stack 中包含的元素个数。

下表列出了Stack类的一些常用的方法:

序号方法名 & 描述
1public virtual void Clear();
从 Stack 中移除所有的元素。
2public virtual bool Contains( object obj );
判断某个元素是否在 Stack 中。
3public virtual object Peek();
返回在 Stack 的顶部的对象,但不移除它。
4public virtual object Pop();
移除并返回在 Stack 的顶部的对象。
5public virtual void Push( object obj );
向 Stack 的顶部添加一个对象。
6public virtual object[] ToArray();
复制 Stack 到一个新的数组中。

实例:

C#队列(Queue)

队列(Queue)代表了一个先进先出的对象集合。当需要对各项进行先进先出的访问时,则使用队列。当在列表中添加一项,称为入队,当从列表中移除一项时,称为出队。

Queue类的方法和属性

下表列出了Queue类的一些常用的属性:

属性描述
Count获取 Queue 中包含的元素个数。

下表列出了Queue类的一些常用的方法:

序号方法名 & 描述
1public virtual void Clear();
从 Queue 中移除所有的元素。
2public virtual bool Contains( object obj );
判断某个元素是否在 Queue 中。
3public virtual object Dequeue();
移除并返回在 Queue 的开头的对象。
4public virtual void Enqueue( object obj );
向 Queue 的末尾添加一个对象。
5public virtual object[] ToArray();
复制 Queue 到一个新的数组中。
6public virtual void TrimToSize();
设置容量为 Queue 中元素的实际个数。

实例:

C#点阵列(BitArray)

BitArray类管理一个紧凑型的位值数组,它使用布尔值来表示,其中true表示位是开启的(1),false表示位是关闭的(0).

当需要存储位,但是事先不知道位数时,则使用点阵列。可以使用整形索引从点阵列集合中访问各项,索引从零开始。

BitArray类的方法和属性

下表列出了BitArray类的一些常用的属性:

属性描述
Count获取 BitArray 中包含的元素个数。
IsReadOnly获取一个值,表示 BitArray 是否只读。
Item获取或设置 BitArray 中指定位置的位的值。
Length获取或设置 BitArray 中的元素个数。

下表列出了BitArray类的一些常用的方法:

序号方法名 & 描述
1public BitArray And( BitArray value );
对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位与操作。
2public bool Get( int index );
获取 BitArray 中指定位置的位的值。
3public BitArray Not();
把当前的 BitArray 中的位值反转,以便设置为 true 的元素变为 false,设置为 false 的元素变为 true。
4public BitArray Or( BitArray value );
对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位或操作。
5public void Set( int index, bool value );
把 BitArray 中指定位置的位设置为指定的值。
6public void SetAll( bool value );
把 BitArray 中的所有位设置为指定的值。
7public BitArray Xor( BitArray value );
对当前的 BitArray 中的元素和指定的 BitArray 中的相对应的元素执行按位异或操作。

实例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值