【C#】集合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzh66888/article/details/80962643

为什么有了数组,还要出现集合?因为,数组有严重的局限性。首先,数组元素的数据类型必须是相同的,其次,在创建数组时必须知道有多少个元素,对应用程序来说,还要通过循环索引来访问这些元素。因此,数组并不是最方便的数据结构。所以,集合出现了,集合来管理数据将更为方便。

集合

概念

集合是通过高度结构化的方式存储任意对象的类,与无法动态调整大小的数组相比,集合不仅能随意调整大小,而且对存储或检索存在其中的对象提供了更高级的方法。集合可以把一组类似的类型化对象组合在一起。

集合类

.NET Framework的集合类可分为3种类型

 

  1. 常用集合

集合

含义

Array

数组

List

列表

ArrayList

动态数组

Hashtable

哈希表

Dictionary

字典(键/值对集合)

Queue

队列

Stack

SortedList

有序建/值对列表

LinkedList

双向链表

SortedDictionary

有序字典

2.位集合

位集合包括BitArray和BitVector32。

BitArray

  • BitArray是一个集合类,该类中的容量始终与计数相同
  • BitArray类提供一些杂其他集合中未提供的方法,包括允许使用筛选器一次修改多个元素,如And、Or、Xor、Not和SetAll

BitVector32

BitVector32是一个结构型,提供与BitArray同样的功能。它们的主要区别如下。

  • lBitArray是引用类型,在堆中分配内存,而BitVector32是值类型,在堆栈上分配,因此BitVector32的性能更高。
  • BitVector32可存储正好32位的数据,而BitArray可存储可变的位数。BitVector32既可存储位标志,又可存储小整数,因此很适合存储不向用户公开的数据。但是,如果所需位标志的数目未知、可变或大于32,则可用BitArray取代。
  • BitVector32位于System.Collections.Specialized命名空间中,BitArray位于System.Collections命名空间中。

3.    专用集合

专用集合通常用于处理特定的元素类型,包括StringCollection、StringDictionary和NameValueCollection等。

动态数组类ArrayList

ArrayList类提供多数System.Collections类都提供的功能,但这些功能在数组(Array)类中没有提供。可以将ArrayList看成扩充了功能的数组,但ArrayList不等同于数组。

动态数组类ArrayList与数组类Array的主要区别如下。

Array

ArrayList

大小固定

大小可根据需要自动扩充

一次只能获取或设置一个元素的值

允许添加、插入或移除某一范围的元素

下限可以自定义

下限始终为零

具有多个维度

始终是一维的

位于System命名空间中

位于System.Collections命名空间中

HashTable(哈希表)

HashTable通常称为哈希表,它表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。它的每个元素都是一个存储在字典实体对象中的键/值对。键不能空引用,但值可以。也就是说HashTable像一个字典,根据键可以查找到相应的值。

猜你喜欢

转载自blog.csdn.net/wzh66888/article/details/80962643