C#集合(Collection)

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

集合类的用途多种多样,例如可以动态的为元素分配内存、根据索引访问列表项等等,这些类创建 Object 类的对象集合,Object 类是 C# 中所有数据类型的基类。

C# 中的集合类型

在 System.Collections.Generic,System.Collections.Concurrent 和 System.Collections 命名空间下提供了许多集合类型,每种集合类型都有特定的用途,下面以 System.Collection 命名空间为例,该命名空间下提供的集合类型如下表所示:

描述和用法
动态数组(ArrayList) 动态数组表示可被单独索引的对象的有序集合。
动态数组基本上与数组相似,唯一不同的是动态数组可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整自身的大小。
另外,动态数组也允许在列表中进行动态内存分配、增加、搜索、排序等等。
哈希表(Hashtable) 哈希表可以使用键来访问集合中的元素。
哈希表中的每一项都由一个键/值对组成,键用于访问集合中的指定项。
排序列表(SortedList) 排序列表是数组和哈希表的组合,可以使用键或索引来访问列表中的各项。
排序列表中包含一个可使用键或索引访问各项的列表,如果您使用索引访问各项,则它是一个动态数组,如果您使用键访问各项,则它就是一个哈希表。
另外,排序列表中的各项总是按键值进行排序的。
堆栈(Stack) 堆栈代表了一个后进先出的对象集合。
当您需要对各项进行后进先出的访问时,则可以使用堆栈。为堆栈中添加一项称为推入项目,从堆栈中移除一项称为弹出项目。
队列(Queue) 队列代表了一个先进先出的对象集合。
当您需要对各项进行先进先出的访问时,则可以使用队列。为队列中添加项目称为入队,为队列中移除项目称为出队。
点阵列(BitArray) 点阵列代表了一个使用 1 和 0 来表示的二进制数组。
当您需要存储比特位,但是事先不知道具体位数时,则可以使用点阵列。可以使用整型索引从点阵列集合中访问各项,索引从零开始。