C#集合和字典
C# 集合和字典
集合(Collections)
集合是C#中常用的一种数据结构,它可以容纳一组具有相同类型的对象。C#中常用的集合类有:
List
List
List<int> numbers = new List<int>();
// 添加元素
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);
// 访问元素
int first = numbers[0];
// 删除元素
numbers.Remove(2);
// 遍历集合
foreach (int number in numbers)
{
Console.WriteLine(number);
}
Dictionary<TKey, TValue>
Dictionary<TKey, TValue>是C#中用于存储键值对的集合类。其中,TKey表示键的类型,TValue表示值的类型。下面是Dictionary<TKey, TValue>的一些常用方法:
Dictionary<string, int> ages = new Dictionary<string, int>();
// 添加键值对
ages.Add("Tom", 20);
ages.Add("Jerry", 18);
ages.Add("Mickey", 22);
// 访问值
int tomAge = ages["Tom"];
// 删除键值对
ages.Remove("Jerry");
// 遍历集合
foreach (KeyValuePair<string, int> pair in ages)
{
Console.WriteLine(pair.Key + ": " + pair.Value);
}
字典(Dictionary)
字典是C#中的一种高效的键值对数据结构,它可以快速地查找特定的键,并返回与该键相关联的值。C#中的字典类就是Dictionary<TKey, TValue>。下面是一些关于字典的笔记:
字典的基本操作
Dictionary<string, int> ages = new Dictionary<string, int>();
// 添加键值对
ages.Add("Tom", 20);
ages.Add("Jerry", 18);
ages.Add("Mickey", 22);
// 访问值
int tomAge = ages["Tom"];
// 删除键值对
ages.Remove("Jerry");
// 遍历集合
foreach (KeyValuePair<string, int> pair in ages)
{
Console.WriteLine(pair.Key + ": " + pair.Value);
}
字典的遍历
遍历字典有两种方式,一种是遍历所有的键值对,另一种是遍历所有的键或所有的值
Dictionary<string, int> ages = new Dictionary<string, int>();
// 添加键值对
ages.Add("Tom", 20);
ages.Add("Jerry", 18);
ages.Add("Mickey", 22);
// 遍历键值对
foreach (KeyValuePair<string, int> pair in ages)
{
Console.WriteLine(pair.Key + ": " + pair.Value);
}
// 遍历键
foreach (string key in ages.Keys)
{
Console.WriteLine(key);
}
// 遍历值
foreach (int value in ages.Values)
{
Console.WriteLine(value);
}
字典的性能
字典是一种高效的数据结构,它的查找操作的时间复杂度是O(1),因为它是通过哈希表来实现的。在实际应用中,如果需要频繁地进行查找操作,字典是一种非常适合的数据结构。但是,字典的缺点是占用内存较多,因为它需要维护哈希表。
字典的键和值的类型
字典的键和值可以是任何类型的对象,但是需要注意的是,键必须是唯一的。如果键重复了,会导致后面的键值对覆盖前面的键值对。在使用字典时,需要根据具体的场景选择合适的键和值的类型。
字典的线程安全性
字典在默认情况下是非线程安全的,如果多个线程同时对同一个字典进行修改操作,可能会导致数据的不一致性。为了解决这个问题,C#提供了线程安全的字典类ConcurrentDictionary<TKey, TValue>,它可以安全地被多个线程同时访问和修改。
本文来自博客园,作者:Wo_OD,转载请注明原文链接:https://www.cnblogs.com/WoOD-outPut/p/17202078.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)