C#中List、Dictionary、HashSet用法以及区别

news2025/1/14 1:06:38

标题:

前言

在C#编程中,List、Dictionary和HashSet是常用的集合类型,它们都有自己的特点和适用场景。本篇博客将介绍它们的用法、区别及常见操作。深入了解这些集合类型,能够帮助我们更好地组织和处理数据。


1. List:

List是一个有序可重复集合,可以存储多个相同或不同类型的元素。对于需要经常访问或修改集合中的元素、保持元素插入顺序的场景,List是一个常用的选择。

示例代码:

List<string> fruits = new List<string>();
fruits.Add("apple");
fruits.Add("banana");
fruits.Add("orange");

foreach (string fruit in fruits)
{
    Console.WriteLine(fruit); // 输出:"apple", "banana", "orange"
}

2. Dictionary:

Dictionary是一个键值对集合,每个元素由一个键和一个关联的值组成。它提供了快速的键值查找能力,并且没有重复键。Dictionary适用于需要根据特定键进行快速检索的场景。

示例代码:

Dictionary<string, string> fruitsDict = new Dictionary<string, string>();
fruitsDict.Add("A", "apple");
fruitsDict.Add("B", "banana");
fruitsDict.Add("O", "orange");

string value = fruitsDict["A"];
Console.WriteLine(value); // 输出:"apple"

foreach (KeyValuePair<string, string> kvp in fruitsDict)
{
    Console.WriteLine(kvp.Key + ":" + kvp.Value); // 输出:"A:apple", "B:banana", "O:orange"
}

3. HashSet:

HashSet是一个无序、唯一的集合,它只能包含独一无二的元素。HashSet提供了高效的元素检索和去重功能。当需要快速查找和消除重复元素时,HashSet是一个理想的选择。

示例代码:

HashSet<string> fruitsSet = new HashSet<string>();
fruitsSet.Add("apple");
fruitsSet.Add("banana");
fruitsSet.Add("orange");
fruitsSet.Add("apple"); // 重复元素不会被添加

foreach (string fruit in fruitsSet)
{
    Console.WriteLine(fruit); // 输出:"apple", "banana", "orange"
}

结论

List、Dictionary和HashSet是C#中常用的集合类型。List适用于有序可重复的场景,Dictionary适用于键值对查找,HashSet适用于唯一无序的场景。根据具体需求选择适当的集合类型,能够提高代码的效率和可读性。

希望本篇博客对您了解C#中List、Dictionary和HashSet的用法及区别有所帮助。在实际应用中,根据具体场景选择合适的集合类型将更加灵活和高效。愿每一行代码都充满条理!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1108479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AI视野·今日CV 计算机视觉论文速览 第269期】Tue, 17 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Tue, 17 Oct 2023 Totally 158 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers HairCLIPv2: Unifying Hair Editing via Proxy Feature Blending Authors Tianyi Wei, Dongdong Chen, Wenbo Zhou, Jing …

【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

![请 https://cloud.tencent.com/act/cps/redirect?redirect2446&cps_key2e531299bf7e92946df4c3162a81b552&fromconsole

【故障诊断】用于轴承故障诊断的候选故障频率优化克改进包络频谱研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

网络编程 - TCP协议

一&#xff0c;TCP基本概念 TCP的特性&#xff1a; TCP是有连接的&#xff1a;TCP想要通信&#xff0c;就需要先建立连接&#xff0c;之后才能通信 TCP是可靠传输&#xff1a;网络上进行通信&#xff0c;A给B发消息&#xff0c;这个消息是不可能做到100%送达的&#xff0c;所以…

Qt配置OpenCV(保姆级教程)

Qt配置OpenCV Qt下载CMake安装OpenCV安装Qt配置OpenCV Qt下载 Qt点击下载 具体的安装过程就不在讲了&#xff0c;根据自己的需求进行安装。 CMake安装 CMake点击下载 直接跟着提示进行安装就行。 OpenCV安装 OpenCV点击下载 提示&#xff1a;这里建议安装我指定的版本&#x…

关于python环境下的语音转文本,whisper或funASR

因为前阵子&#xff0c;有需求要将语音转为文本再进行下一步操作。感觉这个技术也不算是什么新需求&#xff0c;但是一搜&#xff0c;都是大厂的api&#xff0c;或者是什么什么软件&#xff0c;由于想要免费的&#xff0c;同时也要嵌入在代码中&#xff0c;所以这些都不能用。、…

半导体可靠性测试方法都有哪些?

半导体测试是半导体设备中的一种技术&#xff0c;其中半导体组件(芯片、模块等)在组装到系统就会出现故障。在特定电路的监控下&#xff0c;部件被迫经历一定的半导体试验条件&#xff0c;并分析部件的负载能力等性能。这种半导体测试有助于确保系统中使用的组件导体器件&#…

JDK命令行工具

1 jps: jps命令可以方便的查看进程id,启动类,传入参数, jvm参数 jps命令类似于linux 下的ps,但是只列出java的进程. 直接运行jps不加参数,会列出java程序的进场ID,及main函数名称 C:\Users\shj>jps 42340 Jps 41064 42040 JucApplication 37804 Launcher可以看到,目前有4个…

Confluence 用户管理

1. 创建用户 功能入口&#xff1a; Confluence→管理→用户管理→添加用户 功能说明&#xff1a; 填写必要信息&#xff0c;点击“添加”按钮&#xff0c;即可完成用户创建 用户名&#xff1a;英文名称&#xff0c;真实用户统一采用邮箱前缀&#xff1b;全名&#xff1a;中…

python换源,解决pip安装第三方库时无法下载和连接超时等问题

使用pip安装包是用python编码最基础并且必不可少的基础&#xff0c;新手入门时常常会跟着网上的教程说换源&#xff0c;但还会出现意料之外的问题&#xff0c;比如&#xff1a; 1.换源之后还是连接超时 2.在pycharm的python interpreter中安装包显示 Error updating package …

多模态及图像安全的探索与思考

前言 第六届中国模式识别与计算机视觉大会&#xff08;The 6th Chinese Conference on Pattern Recognition and Computer Vision, PRCV 2023&#xff09;已于近期在厦门成功举办。通过参加本次会议&#xff0c;使我有机会接触到许多来自国内外的模式识别和计算机视觉领域的研究…

计算机X86架构的描述

先来看看计算机的工作模式。 对于一个计算机来讲&#xff0c;最核心的就是 CPU&#xff08;Central Processing Unit&#xff0c;中央处理器&#xff09;。这是这台计算机的大脑&#xff0c;所有的设备都围绕它展开。 CPU 和其他设备连接&#xff0c;要靠一种叫做总线&#xf…

多模块打包报错找不到包的问题

最近做微服务项目&#xff0c;服务A&#xff0c;服务B&#xff0c;..&#xff0c;服务A依赖B&#xff0c;在idea里都可以跑起来&#xff0c;但是当打包部署到服务器时&#xff0c;懵逼了&#xff0c;各种clean package 就是不行&#xff0c;总是报找不到类或找不到包&#xff0…

代码随想录Day22 LeetCode T39 组合总和 T40 组合总和II T131 分割回文串

LeetCode T39 组合总和 题目链接:39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; 树形图 题目思路: 这我们会发现和昨天的题目很像,只是这里的元素并不是只能选取一次了,我们可以根据代码画出树形图来解决问题,下面我们开始递归三部曲 首先我们先定义出result和path数…

2.4 如何在FlinkSQL使用DataGen(数据生成器)

1、DataGen SQL 连接器 FLinkSQL中可以使用内置的DataGen SQL 连接器来生成测试数据 官网链接&#xff1a;DataGen SQL 连接器 2、随机数数据生成器 随机数数据生成器支持随机生成 char、varchar、binary、varbinary、string 类型的数据 它是一个无界流的数据生成器 -- TO…

快速解决 Resource not accessible by integration

简介 最近好久没有写博客了&#xff0c;今天在写开源项目 python-package-template 的时候&#xff0c;正好遇到一个问题&#xff0c;记录一下吧。本文将介绍 Resource not accessible by integration 的几种解决方案。 也欢迎大家体验一下 python-package-template 这个项目&…

node重装-解铃还须系铃人

一、问题场景 node的重装真的浪费我一整天时间&#xff0c;必须写下这篇踩坑日记 我在做博客项目的时候&#xff0c;启动前端Vue项目的时候&#xff0c;由于之前的node版本是18.16.1&#xff0c;npm install的时候出现问题&#xff0c;原因是node的版本过高&#xff0c;应该配…

Leetcode 242 有效的字母异位词(字符串转字符串数组+排序 哈希表)

Leetcode 242 有效的字母异位词&#xff08;哈希表&#xff09; 解法1. 转为字符串数组-排序-比较解法2 解法1. 转为字符串数组-排序-比较 采用排序的方法&#xff0c;先把字符串转化为字符数组&#xff0c;之后进行字符数组排序&#xff0c;之后比较两个字符数组是否相同 字符…

水库大坝安全监测方案,筑牢水库安全防线!

方案背景 党的十九届五中全会提出&#xff1a;“统筹发展和安全、加快病险水库除险加固”&#xff1b;国务院常务会议明确“十四五”期间&#xff0c;水库除险加固和运行管护要消除存量隐患&#xff0c;实现常态化管理&#xff1b;到2025年前&#xff0c;完成新出现病险水库的…

【算法】TOP101-二叉树篇(持续更新ing)

文章目录 1. JZ36 二叉搜索树与双向链表2. 100. 相同的树3. 572. 另一棵树的子树4. BM26 求二叉树的层序遍历 1. JZ36 二叉搜索树与双向链表 JZ36 二叉搜索树与双向链表 解题思路: 由题目可知,这是一颗二叉搜索树.二叉搜索树的特点就是他的中序遍历是有序的.所以本题我们大的…