常用集合

一、数组的局限性

  • 数组只能存储相同类型的数据
  • 数组不能动态的扩展长度

二、什么是集合

  • 集合的定义:集合原本是数学上的一个概念,表示一组具有某种性质的数学元素,引用到程序设计中表示一组具有相同性质的对象。集合好比容器,将一系列相似的组合一起,是一个特殊的类,和数组一样,可以通过索引访问集合成员,也可以通过”键”来访问,与传统数组不同的是,集合的大小可以动态调整,可以在运行时添加或删除元素
  • 集合的类型:集合分为泛型集合与非泛型集合,泛型集合类一般位于System.Collections.Generic名称空间,非泛型集合类位于System.Collections名称空间。此外,System.Collections.Specialized名称空间中也包含一些有用的集合类

三、常见的集合

  • 常用的非泛型集合:
类名 描述和用法
动态数组(ArrayList) 它代表了可被单独索引的对象的有序集合。 它基本上可以替代一个数组。但是,与数组不同的是,您可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序各项。
堆栈(Stack) 它代表了一个后进先出的对象集合。 当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素。
队列(Queue) 它代表了一个先进先出的对象集合。 当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。
哈希表(HashTable) 它使用键来访问集合中的元素。 当您使用键访问元素时,则使用哈希表,而且您可以识别一个有用的键值。哈希表中的每一项都有一个键/值对。键用于访问集合中的项目。
- 常用的泛型集合:

c#中常见的集合、集合的类成员与用法

集合的类成员和用法

  • 动态数组(ArrayList):动态的增加和减少元素,实现了ICollection和IList和IEnumerable接口,灵活的设置数组的大小,不安全的集合类型,其元素为值类型时,效率不高(装箱和拆箱耗性能)
  • ArrayList常用方法与描述:
方法名 描述和用法
Add() 将对象添加到ArrayList的结尾处
Insert() 将元素插入ArrayList的指定索引处
Remove() 从ArrayList中移除特定对象的第一个匹配项
RemoveAt() 移除ArrayList的指定索引处的元素
Reverse() 将整个ArrayList当中元素的顺序反转
Contains() 确定某元素是否在ArrayList中
Clear() 从ArrayList中移除所有元素
  • 泛型动态数组(List):List类是ArrayList类的泛型等效类,同样实现了IList接口,IEnumrator接口和ICollection,与ArrayList不同的是,声明集合时需要声明集合内部的数据类型,即T的类型,安全的集合类型,某种情况时,在处理值类型时其处理速度比ArrayList快的多
  • List常用方法与描述:
方法名 描述和用法
Add() 将对象添加到List的结尾处
Insert() 将元素插入List的指定索引处
Remove() 从List中移除特定对象的第一个匹配项
RemoveAt() 移除List的指定索引处的元素
Reverse() 将整个List当中元素的顺序反转
Contains() 确定某元素是否在List中
Clear() 从List中移除所有元素
IndexOf(T) 搜索指定对象,并返回整个List中第一个匹配项的从0开始的索引
- 常见集合和列表实现接口:

c#中常见的集合、集合的类成员与用法

  • 堆栈(Stack):后进先出(LIFO)的一种数据结构,本质上堆栈也是一种线性结构,线性结构的基本特点:即每个节点有且只有一个前驱结点和一个后续节点。随着像Stack中添加元素,容量通过重新分配按需自动增加,可以接受null作为有效值,不安全的数据结构,其泛型为Stack
  • Stack常用方法与描述:
方法名 描述和用法
Push() 将对象插入Stack的顶部(入栈操作)
Pop() 移除并返回Stack顶部的对象(出栈操作)
Peek() 返回位于stack顶部的对象,但不移除
Contains() 确定某元素是否在栈中
Clear() 从stack中移除所有对象
Count 获取栈中包含的元素数
  • 队列(Queue):后进先出(FIFO)的一种数据结构,随着像Queue中添加元素,容量通过重新分配按需自动增加,可以通过TrimToSize来减少容量,可以接受null作为有效值,不安全的数据结构,其泛型为Queue
    在A*算法中会用优先级队列处理路径节点
  • Queue常用方法与描述:
方法名 描述和用法
Enqueue() 将对象添加到Queue的结尾处,入队
Dequeue() 移除并返回位于Queue开始处的对象
Peek() 返回位于Queue开始处的对象但不将其移除
Contains() 确定某元素是否在Queue中
Clear() 从Queue中移除所有对象
Count 获取Queue中包含的元素数
  • 字典(Dictionary<K,V>):处理和表现类似key-value的键值对的集合,Key和Value的类型由泛型指定,key值必须唯一,区分大小写。Value可以是值类型变量,也可以是对象
  • Dictionary<K,V>常用方法与描述:
方法名 描述和用法
Add(TKey, TValue) 将指定的键和值添加到字典中
Clear() 将所有键和值从 Dictionary 中移除
ContainsKey(TKey) 确定 Dictionary 是否包含指定键
ContainsValue(TValue) 确定 Dictionary 是否包含特定值
Remove(TKey) 将带有指定键的值从 Dictionary 中移除
TryGetValue(TKey, TValue) 获取与指定的键关联的值
Keys 获得一个包含 Dictionary 中的键的集合
Values 获得一个包含 Dictionary 中的值的集合
  • 哈希表(HashTable):处理和表现类似key-value的键值对的集合,Key和Value都是object类型,key值必须唯一,区分大小写。Value可以是值类型变量,也可以是对象
  • HashTable常用方法与描述
方法名 描述和用法
Add() 将指定的键和值添加到 Hashtable 中
Clear() 从 Hashtable 中移除所有的元素
ContainsKey() 确定 Hashtable 是否包含指定键
ContainsValue() 确定 Hashtable 是否包含特定值
Remove() 从 Hashtable 中移除带有指定的键的元素
Keys 获取一个ICollection,包含 Hashtable 中的键
Values 获取一个ICollection,包含Hashtable中的值

相关文章:

  • 2022-02-27
  • 2022-12-23
  • 2021-07-07
  • 2021-04-25
  • 2021-05-04
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-11-21
  • 2022-12-23
  • 2022-12-23
  • 2021-08-24
  • 2022-12-23
  • 2021-12-06
相关资源
相似解决方案