c#集合、数组

集合的概念
集合原本是数学上的一个概念,表示一组具有某种性质的数学元素,引用到程序设计中表示一组具有相同性质的对象。集合好比容器,将一系列相似的组合一起,是一个特殊的类,和数组一样,可以通过索引访问集合成员,也可以通过”键”来访问,与传统数组不同的是,集合的大小可以动态调整,可以在运行时添加或删除元素。

集合的类型
可分为两类:泛型集合和非泛型集合
泛型集合一般位于System.Collections.Generic名称空间
非泛型集合一般位于System.Collections名称空间
System.Collections.Specialized名称空间中也包含一些有用的集合类

常见的集合
下面是各种常用的System.Collections 命名空间的类
非泛型集合:动态数组(ArrayList)、栈堆(Stack)、队列(Queue)、哈希表(Hash Table)
c#集合、数组_第1张图片

下面是各种常用的System.Collections.Generic 命名空间的类
泛型集合:Dictionary、List、Stack、Queue
c#集合、数组_第2张图片

集合的类成员与用法
动态数组ArrayList
1.动态增加和减少元素
2.实现了ICollection和IList和IEnumberable接口
3.灵活设置数组的大小
4.不安全的集合类型
5.其元素为值类型的时候效率不高(装箱和拆箱耗能高)
ArrayList的常用方法和描述c#集合、数组_第3张图片

泛型动态数组List
1.List是ArrayList的泛型等效类
2.同样实现了ICollection和IList和IEnumberable接口
3.声明集合时需要声明集合内部的数据类型,即T的类型
4.安全的集合类型
5.某种情况时,处理值类型速度比ArrayList快的多
List的常用方法与描述c#集合、数组_第4张图片

接口说明
常见的集合和列表实现接口
c#集合、数组_第5张图片

栈堆-Stack
栈堆
1.后进先出(LIFO)的一种数据结构,本质也是一种线性结构
2.线性结构的特点:每个节点都只有一个前驱和一个后继
3.随着向Stack中添加元素,容量通过重新分配按需自动增加
4.可以接受null作为有效值
5.允许重复的元素
6.不安全的数据结构
7.其泛型为Stack
Stack的常用方法与描述c#集合、数组_第6张图片
/f/ZGeBBcjFrWLTgnlQ.png
队列-Queue
1.先进先出(FIFO)的一种数据结构
2.可以接受null为空值
3.允许重复的元素
4.不安全的数据结构
5.其泛型为Queue
Queue的常用方法和描述
c#集合、数组_第7张图片

哈希表-HashTable
1.处理和表现类似Key-Value键值对的集合
2.Key和Value都是Object类型
3.Key值必须唯一,区分大小写
4.Value可以使值类型,也可以是对象
HashTable的常用方法和描述
c#集合、数组_第8张图片

字典-Dictionary
1.处理和表现类似Key-Value键值对的集合
2.Key和Value的类型都有泛型指定
3.Key值必须唯一,区分大小写
4.Value可以使值类型,也可以是对象、
常用方法与描述
c#集合、数组_第9张图片

你可能感兴趣的:(集合,数组,c#)