【C#】集合

14 篇文章 0 订阅

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

集合

概念

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

集合类

.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像一个字典,根据键可以查找到相应的值。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值