C# Dictionary和SortedDictionary的简介
C#中的Dictionary和SortedDictionary都是用来存储键值对的数据结构,不同之处在于它们对数据的存储方式不同。
Dictionary
Dictionary是一个散列表,使用哈希表存储键值对。在Dictionary中,键值对的键必须是唯一的,而值可以重复。下面是一个创建Dictionary的示例:
Dictionary<string, int> dict = new Dictionary<string, int>();
dict.Add("Tom", 18);
dict.Add("Jerry", 20);
通过Add方法往Dictionary中添加元素,第一个参数是键,第二个参数是值。Dictionary可以通过键来快速查找值:
int age = dict["Tom"];
SortedDictionary
SortedDictionary也是一个键值对的数据结构,和Dictionary不同的是,SortedDictionary是有序的。SortedDictionary内部使用红黑树来实现,因此访问它的元素时有着更好的性能表现。下面是一个创建SortedDictionary的示例:
SortedDictionary<string, int> dict = new SortedDictionary<string, int>();
dict.Add("Tom", 18);
dict.Add("Jerry", 20);
通过Add方法往SortedDictionary中添加元素,第一个参数是键,第二个参数是值。SortedDictionary内部会自动根据键对元素进行排序,因此可以通过遍历SortedDictionary来得到排序后的结果:
foreach (KeyValuePair<string, int> pair in dict)
{
Console.WriteLine(pair.Key + ": " + pair.Value);
}
示例
示例1:使用Dictionary统计单词出现的次数
以下示例演示了如何使用Dictionary统计字符串中每个单词出现的次数:
string str = "hello world, hello everyone, how are you?";
Dictionary<string, int> dict = new Dictionary<string, int>();
string[] words = str.Split(' ', ',', '?', '!');
foreach (string word in words)
{
if (dict.ContainsKey(word))
{
dict[word]++;
}
else
{
dict[word] = 1;
}
}
foreach (KeyValuePair<string, int> pair in dict)
{
Console.WriteLine(pair.Key + ": " + pair.Value);
}
在此示例中,我们首先将字符串str通过Split方法切分成单词数组,然后通过循环遍历每个单词。在每个单词中,我们判断它是否已经在Dictionary中出现过,如果出现过就将值加1,如果没有出现过就将其加入到Dictionary中。
示例2:使用SortedDictionary查找最接近的日期
以下示例演示了如何使用SortedDictionary查找距离指定日期最近的日期:
DateTime today = DateTime.Today;
SortedDictionary<TimeSpan, DateTime> dict = new SortedDictionary<TimeSpan, DateTime>();
dict.Add(TimeSpan.Zero, today);
dict.Add(TimeSpan.FromDays(2), today.AddDays(2));
dict.Add(TimeSpan.FromDays(-1), today.AddDays(-1));
TimeSpan minDiff = TimeSpan.MaxValue;
DateTime closestDate = DateTime.MinValue;
foreach (KeyValuePair<TimeSpan, DateTime> pair in dict)
{
TimeSpan diff = pair.Value - today;
if (diff < TimeSpan.Zero) diff = diff.Negate();
if (diff < minDiff)
{
minDiff = diff;
closestDate = pair.Value;
}
}
Console.WriteLine("Closest date: " + closestDate);
在此示例中,我们首先创建了一个SortedDictionary,用来存储日期和它与今天的时间差。然后我们遍历SortedDictionary,计算字典中每个日期与今天的时间差,并找到距离今天最近的日期。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# Dictionary和SortedDictionary的简介 - Python技术站