当前位置: 首页 > news >正文

C#中常用集合类型

在C#中,集合是用于存储和操作一组数据项的数据结构。这些集合通常位于 System.Collections 和 System.Collections.Generic 命名空间中。下面我将概述C#中几种常用的集合类型及其特点:

1. System.Collections 命名空间中的集合

这个命名空间中的集合类型不支持泛型,因此在编译时不检查类型安全性。这意味着在运行时可能会遇到类型转换错误。

ArrayList

  • 动态数组,可以存储任意类型的对象。

  • 缺乏类型安全性。

  • 提供了 AddInsertRemoveSortReverse 等方法。

  • 示例:

ArrayList list = new ArrayList();
list.Add(1);
list.Add("two");

Hashtable

  • 键值对集合,键必须是 object 类型。

  • 键必须唯一。

  • 缺乏类型安全性。

  • 提供了 AddRemoveContainsKeyContainsValue 等方法。

  • 示例:

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

  • 动态数组,可以存储特定类型的对象。

    提供了 AddInsertRemoveSortReverse 等方法。

    示例:

List<int> numbers = new List<int>();
numbers.Add(1);
numbers.Add(2);

HashSet

  • 用于存储唯一元素的集合。

  • 提供了 AddRemoveContains 等方法。

  • 示例:

var hashSet = new HashSet<string>();
hashSet.Add("a");
hashSet.Add("c");
hashSet.Add("b");
hashSet.Add("a");
hashSet.Add("c");
hashSet.Add("b");
foreach (var item in hashSet)
{Console.WriteLine(item);
}
/*输出结果abc*/

Dictionary<TKey, TValue>

  • 键值对集合,键和值都可以是特定类型。

  • 键必须唯一。

  • 提供了 AddRemoveTryGetValueContainsKey 等方法。

  • 示例:

Dictionary<string, int> scores = new Dictionary<string, int>();
scores.Add("Alice", 90);
scores.Add("Bob", 80);

SortedDictionary<TKey, TValue>

  • 键值对集合,按照键排序。

  • 键必须唯一。

  • 提供了 AddRemoveTryGetValueContainsKey 等方法。

  • 示例:

var sortDic = new SortedDictionary<int, string>();
sortDic.Add(10, "十");
sortDic.Add(5, "五");
sortDic.Add(1, "一");
Console.WriteLine(sortDic.Keys);
foreach (var item in sortDic)
{Console.WriteLine($"{item.Key}~{item.Value}");
}
/*输出结果1~一5~五10~十*/

Queue

  • 泛型的先进先出 (FIFO) 集合。

  • 支持 Enqueue 和 Dequeue 方法。

  • 示例:

var queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);
foreach (var item in queue)
{Console.WriteLine(item);
}
Console.WriteLine($"dequeue元素:{queue.Dequeue()}");
/*输出结果123dequeue元素:1*/

Stack

  • 泛型的后进先出 (LIFO) 集合。

  • 支持 Push 和 Pop 方法。

  • 示例:

var stack = new Stack<int>();
stack.Push(1);
stack.Push(2);
stack.Push(3);
foreach (var item in stack)
{Console.WriteLine(item);
}
//pop元素
Console.WriteLine($"pop元素:{stack.Pop()}");
/*输出结果321pop元素:3*/

LinkedList

  • 双向链表,适合频繁插入和删除的场景。

  • 支持 AddFirstAddLastRemoveFirstRemoveLast 等方法。

  • 示例:

var linkedList = new LinkedList<string>();
linkedList.AddLast("2");
linkedList.AddLast("3");
linkedList.AddLast("5");linkedList.AddFirst("1");
linkedList.AddBefore(linkedList.Find("5"), "4");foreach (var item in linkedList)
{Console.WriteLine(item);
}Console.WriteLine($"2前面的值:{linkedList.Find("2").Previous.Value}");
Console.WriteLine($"2后面的值:{linkedList.Find("2").Next.Value}");/*输出结果123452前面的值:12后面的值:3*/

文章转载自:Y00

原文链接:https://www.cnblogs.com/ayic/p/18334908

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 室内宠物空气净化器哪个好?排名靠前室内宠物空气净化器使用感受
  • 详解Xilinx FPGA高速串行收发器GTX/GTP(3)--GTX的时钟架构
  • 白骑士的PyCharm教学高级篇 3.2 多模块项目管理
  • 谷粒商城实战笔记-129-商城业务-商品上架-nested数据类型场景
  • 用Java构建简单ATM系统
  • 白骑士的PyCharm教学进阶篇 2.5 数据库连接与管理
  • 基于深度学习的大规模模型训练
  • 无代码开发AI服务 - 利用向量库Kendra和Llama大模型在亚马逊云科技AWS上创建RAG知识库
  • 基于Qt的视频剪辑
  • informer中的WorkQueue机制的实现分析与源码解读(1)
  • Netty的几种IO模式的实现与切换
  • Flask基础教程(第一阶段)
  • JAVA—面向对象编程高级
  • 《死侍与金刚狼》票房飘红! 目前全球票房总票房$7亿,预计可达$12亿,全球排名跃居第二!
  • 数据集相关类代码回顾理解 | sns.distplot\%matplotlib inline\sns.scatterplot
  • 2017年终总结、随想
  • es6--symbol
  • ES6之路之模块详解
  • happypack两次报错的问题
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Js基础——数据类型之Null和Undefined
  • js中的正则表达式入门
  • MySQL QA
  • Node + FFmpeg 实现Canvas动画导出视频
  • NSTimer学习笔记
  • Python socket服务器端、客户端传送信息
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 检测对象或数组
  • 区块链分支循环
  • 如何用vue打造一个移动端音乐播放器
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 听说你叫Java(二)–Servlet请求
  • 网页视频流m3u8/ts视频下载
  •  一套莫尔斯电报听写、翻译系统
  • Android开发者必备:推荐一款助力开发的开源APP
  • 组复制官方翻译九、Group Replication Technical Details
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #QT(智能家居界面-界面切换)
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #微信小程序:微信小程序常见的配置传值
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (九)信息融合方式简介
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)重识new
  • .NET 3.0 Framework已经被添加到WindowUpdate