概述C#中各种类型集合的特点

在C#中,集合是用于存储和操作一组数据项的数据结构。这些集合通常位于 System.Collections 和 System.Collections.Generic 命名空间中。下面我将概述C#中几种常用的集合类型及其特点:
1. System.Collections 命名空间中的集合
这个命名空间中的集合类型不支持泛型,因此在编译时不检查类型安全性。这意味着在运行时可能会遇到类型转换错误。
ArrayList
- 动态数组,可以存储任意类型的对象。
- 缺乏类型安全性。
- 提供了
Add,Insert,Remove,Sort,Reverse等方法。 - 示例:
ArrayList list = new ArrayList();
list.Add(1);
list.Add("two");
Hashtable
- 键值对集合,键必须是
object类型。 - 缺乏类型安全性。
- 提供了
Add,Remove,ContainsKey,ContainsValue等方法。 - 示例:
Hashtable table = new Hashtable();
table.Add("key", "value");
- 键值对集合,键必须是
Stack
- 后进先出 (LIFO) 集合。
- 支持
Push和Pop方法。 - 示例:
Stack<object> stack = new Stack<object>();
stack.Push(1);
stack.Push("two");
object top = stack.Pop(); // "two"
Queue
- 先进先出 (FIFO) 集合。
- 支持
Enqueue和Dequeue方法。 - 示例:
Queue<object> queue = new Queue<object>();
queue.Enqueue(1);
queue.Enqueue("two");
object front = queue.Dequeue(); // 1
2. System.Collections.Generic 命名空间中的集合
这个命名空间中的集合类型支持泛型,因此可以确保类型安全性。
List
- 动态数组,可以存储特定类型的对象。
- 提供了
Add,Insert,Remove,Sort,Reverse等方法。 - 示例:
List<int> numbers = new List<int>();
numbers.Add(1);
numbers.Add(2);
HashSet
- 用于存储唯一元素的集合。
- 提供了
Add,Remove,Contains等方法。 - 示例:
HashSet<int> uniqueNumbers = new HashSet<int>();
uniqueNumbers.Add(1);
uniqueNumbers.Add(2);
Dictionary<TKey, TValue>
- 键值对集合,键和值都可以是特定类型。
- 提供了
Add,Remove,TryGetValue,ContainsKey等方法。 - 示例:
Dictionary<string, int> scores = new Dictionary<string, int>();
scores.Add("Alice", 90);
scores.Add("Bob", 80);
SortedDictionary<TKey, TValue>
- 键值对集合,按照键排序。
- 提供了
Add,Remove,TryGetValue,ContainsKey等方法。 - 示例:
SortedDictionary<string, int> sortedScores = new SortedDictionary<string, int>();
sortedScores.Add("Alice", 90);
sortedScores.Add("Bob", 80);
Queue
- 泛型的先进先出 (FIFO) 集合。
- 支持
Enqueue和Dequeue方法。 - 示例:
Queue<int> queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(2);
int front = queue.Dequeue(); // 1
Stack
- 泛型的后进先出 (LIFO) 集合。
- 支持
Push和Pop方法。 - 示例:
Stack<int> stack = new Stack<int>();
stack.Push(1);
stack.Push(2);
int top = stack.Pop(); // 2
LinkedList
- 双向链表,适合频繁插入和删除的场景。
- 支持
AddFirst,AddLast,RemoveFirst,RemoveLast等方法。 - 示例:
LinkedList<int> list = new LinkedList<int>();
list.AddLast(1);
list.AddLast(2);
概述C#中各种类型集合的特点的更多相关文章
- 向集合中添加自定义类型--建议在自定义类型的时候要重写equals方法
package com.bjpowernode.t01list; import java.util.ArrayList; /* * 向集合中添加自定义类型 */public class TestLis ...
- 强大的Guava中的新集合类型: Multiset, Multimap, BiMap, Table, ClassToInstanceMap, RangeSet, RangeMap等
一 Multiset /** * 新类型集合: Multiset: Multiset就是可以保存多个相同的对象,并且无序 * 占据了List和Set之间的一个灰色地带 * 其他实现: TreeMult ...
- 【转】Python数据类型之“序列概述与基本序列类型(Basic Sequences)”
[转]Python数据类型之“序列概述与基本序列类型(Basic Sequences)” 序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主 ...
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
- 详解Java 8中Stream类型的“懒”加载
在进入正题之前,我们需要先引入Java 8中Stream类型的两个很重要的操作: 中间和终结操作(Intermediate and Terminal Operation) Stream类型有两种类型的 ...
- 深入理解javascript中的动态集合——NodeList、HTMLCollection和NamedNodeMap
× 目录 [1]NodeList [2]HTMLCollection [3]NamedNodeMap[4]注意事项 前面的话 一说起动态集合,多数人可能都有所了解.但是,如果再深入些,有哪些动态集合, ...
- 攻城狮在路上(壹) Hibernate(十)--- 映射值类型集合
一.映射Set(集):未排序,无重复. 实例代码: <set name="images" table="IMAGES" lazy="true&q ...
- [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Javascript学习1 - Javascript中的类型对象
原文:Javascript学习1 - Javascript中的类型对象 1.1关于Numbers对象. 常用的方法:number.toString() 不用具体介绍,把数字转换为字符串,相应的还有一个 ...
- Java中泛型 类型擦除
转自:Java中泛型是类型擦除的 Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就是说所有泛型参数类 ...
随机推荐
- windows报错
如果说你dns没有权威的话1.先去long.com上面右键属性把"区域传送给所有服务器打勾"2.右键属性,在名称分析器中,输入要添加为辅助dns的服务器的ip显示解析成功就可以了
- VMware搭建集群环境
集群地址分配 名称 IP 子网掩码 网关 DNS flink01 192.168.22.211 255.255.255.0 192.168.22.2 114.114.114.114 flink02 1 ...
- 手写LRU热点缓存数据结构
引言 LRU是开发过程中设计缓存的常用算法,在此基础上,如何设计一个高效的缓存呢?本文就带大家分析并手撸一个LRUCache. LRU算法 LRU(Least recently used,最近最少使用 ...
- PowerBI_一分钟了解POWERBI计算组功能及作用(第一部分)
1: X-mind&计算组(CALCULATION GROUP)介绍 1.1 什么是计算组 PowerBI的计算组功能可以显著减少必须创建的冗余度量值数,通过允许将DAX表达式定义为应用于模型 ...
- FreeRTOS简单内核实现6 优先级
0.思考与回答 0.1.思考一 如何实现 RTOS 内核支持多优先级? 因为不支持优先级,所以所有的任务都插入了一个名为 pxReadyTasksLists 的就绪链表中,相当于所有任务的优先级都是一 ...
- tempcode排序
package com.hsy;import com.alibaba.fastjson.JSON;import org.springframework.util.CollectionUtils;imp ...
- Linux多网卡的bond模式原理
Linux多网卡绑定 网卡绑定mode共有7种: bond0,bond1,bond2,bond3,bond4,bond5,bond6,bond7 常用的有三种: mode=0: 平衡负载模式, ...
- zabbix数据库
1. 安装MySQL 5.6 操作系统为CentOS7 X64 MySQL文件下载地址 http://dev.mysql.com/downloads/repo/yum/ 卸载已存在文件 rpm -qa ...
- Xcode调试内存最新理解
前提: Xcode 16.0 beta 设置 Scheme设置中勾选Malloc Scribble.Malloc Stack Logging. 这么做是为了在Memory Graph.Profile中 ...
- java 8 stream toMap问题
最近使用java的stream功能有点多,理由有2: 1)少写了不少代码 2)在性能可以接受的范围内 在巨大的collection基础上使用stream,没有什么经验.而非关键业务上,乐于使用stre ...