C# 泛型集合实战:List<T>与Dictionary<TKey, TValue>的使用与优势

embedded/2024/10/9 4:59:48/

C# 中的泛型集合提供了类型安全和性能优势,是现代C#编程中不可或缺的一部分。List<T>Dictionary<TKey, TValue> 是最常用的两个泛型集合类型,分别用于存储元素的列表和键值对的集合。

List

List<T> 是一个可变大小的数组,可以存储任意类型的对象,但一旦声明了List<T>的类型参数T,该列表就只能存储该类型的对象了。List<T>提供了丰富的成员函数来管理集合,如添加、删除、查找元素等。

示例:使用List
using System;
using System.Collections.Generic;class Program
{static void Main(){List<int> myList = new List<int>();// 添加元素myList.Add(1);myList.Add(2);myList.AddRange(new int[] { 3, 4, 5 });// 访问元素Console.WriteLine(myList[0]); // 索引访问// 遍历Listforeach (int item in myList){Console.WriteLine(item);}// 使用Linq查询var evenNumbers = myList.FindAll(x => x % 2 == 0);foreach (var num in evenNumbers){Console.WriteLine(num);}}
}

Dictionary<TKey, TValue>

Dictionary<TKey, TValue> 是一个存储键值对的集合,其中每个键都是唯一的,并且每个键都映射到一个值。Dictionary<TKey, TValue> 提供了快速查找、插入和删除键值对的能力。

示例:使用Dictionary<TKey, TValue>
using System;
using System.Collections.Generic;class Program
{static void Main(){Dictionary<string, int> myDict = new Dictionary<string, int>();// 添加键值对myDict.Add("Apple", 100);myDict["Banana"] = 200;// 访问元素Console.WriteLine($"The count of Apples is {myDict["Apple"]}.");// 遍历Dictionaryforeach (KeyValuePair<string, int> kvp in myDict){Console.WriteLine($"Key = {kvp.Key}, Value = {kvp.Value}");}// 使用Linq查询var filteredDict = myDict.Where(kvp => kvp.Value > 100);foreach (var item in filteredDict){Console.WriteLine($"Key = {item.Key}, Value = {item.Value}");}}
}

注意事项

  • 当使用泛型集合时,不需要在添加或检索元素时进行类型转换,因为集合已经知道了它可以存储的元素的类型。
  • 泛型集合比非泛型集合(如ArrayListHashtable)提供了更好的性能,因为避免了装箱(boxing)和拆箱(unboxing)操作,并允许更精确的内存分配。
  • 泛型集合也提供了更好的类型安全性,因为编译器可以在编译时检查类型错误。
  • 在选择使用List<T>还是Dictionary<TKey, TValue>时,主要取决于我们的具体需求。如果需要存储一个元素列表并且经常需要按索引访问这些元素,那么List<T>是更好的选择。如果需要存储键值对并经常需要通过键来检索值,那么Dictionary<TKey, TValue>是更合适的选择。

http://www.ppmy.cn/embedded/124894.html

相关文章

Liunx各系统中间件查询脚本

Centos 6 #!/bin/bashecho "CentOS 6 系统软件信息收集"# 检查操作系统版本 echo "操作系统版本信息&#xff1a;" cat /etc/redhat-release# 检查JDK echo "检查JDK版本..." if command -v java &> /dev/null; thenjava -versionwhich …

关于鸿蒙next 调用系统权限麦克风

使用app的时候都清楚&#xff0c;想使用麦克风、摄像头&#xff0c;存储照片等&#xff0c;都需要调用系统的权限&#xff0c;没有手机操作系统权限你也使用不了app所提供的功能&#xff0c;虽然app可以正常打开&#xff0c;但是你需要的功能是没办法使用的。今天把自己在鸿蒙学…

LeetCode:871. 最低加油次数(DP Java)

目录 871. 最低加油次数 题目描述&#xff1a; 实现代码与解析&#xff1a; DP 原理思路&#xff1a; 871. 最低加油次数 题目描述&#xff1a; 汽车从起点出发驶向目的地&#xff0c;该目的地位于出发位置东面 target 英里处。 沿途有加油站&#xff0c;用数组 stations…

web框架 django基础-1

bs&cs 常见的软件架构有bs架构和cs架构。 1、工作原理 C/S结构,即Client/Server(客户机/服务器)结构,客户端负责发送请求和处理一部分业务逻辑,服务器端负责处理主要业务逻辑、数据存储和检索。客户端通常需要安装专用的软件。例如:QQ、Pycharm、网易云音乐(安装在…

Mac 电脑设置键盘 Command键

Mac 电脑设置键盘 Command键 如果 mac 电脑连接的第三方键盘&#xff0c;有些键盘没有 command 按键&#xff0c;导致有些功能没有办法使用&#xff0c;比如你想复制粘贴发现也不可以。这个时候你需要设置一个按键为 command 按键。 比如上图中是把 Alt 键设置为 Command 键。 …

WordPress 6.7即将发布的新功能(和截图)

我们一直在密切关注 WordPress 6.7 的开发并测试该版本的测试版&#xff0c;它将带来一些令人兴奋的更新和几个新功能。 例如&#xff0c;我们很高兴地发现即将发布的版本将附带全新的默认主题&#xff0c;并对块编辑器和站点编辑体验进行大规模改进。 在本文中&#xff0c;我…

STM32 ADC的规则组与注入组详解(上)

STM32 ADC的规则组与注入组详解&#xff08;下&#xff09;-CSDN博客 STM32的模数转换器&#xff08;ADC&#xff09;广泛用于将模拟信号转换为数字信号&#xff0c;并应用于各种传感器数据采集、信号处理等场景。STM32的ADC模块不仅支持常规的采样模式&#xff0c;还提供了灵…

国内知名人工智能AI大模型专家培训讲师唐兴通讲授AI办公应用人工智能在营销与销售过程中如何应用数字化赋能

AI如火如荼&#xff0c;对商业与社会影响很大。 目前企业广泛应用主要是在营销、销售方向&#xff0c;提升办公效率等方向。 从喧嚣的AI导入营销与销售初步阶段&#xff0c;那么当下&#xff0c;领先的组织与个人现在正在做什么呢&#xff1f; 如何让人性注入冷冰冰的AI&…