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

本文介绍了C#中常见的集合类型,包括数组的局限性、集合的定义以及非泛型和泛型集合的差异。重点讲解了ArrayList、List<T>、Stack、Queue和Dictionary<K,V>以及HashTable的使用,强调了它们在处理数据时的特点和效率问题,并指出可参考MSDN官方文档获取详细方法描述。" 97506216,8049645,动态规划进阶:复杂状态方程解析,"['动态规划', '算法', '问题解决', '编程', '数据结构']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用集合

一、数组的局限性

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

二、什么是集合

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

三、常见的集合

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

在这里插入图片描述

集合的类成员和用法

  • 动态数组(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开始的索引
- 常见集合和列表实现接口:

在这里插入图片描述

  • 堆栈(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中的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值