📅  最后修改于: 2023-12-03 15:14:32.056000             🧑  作者: Mango
SortedDictionary 是 C# 中的一种集合类型,它是基于红黑树实现的有序键值对集合。其中键和值都可以是任意类型的对象。SortedDictionary 的优点是它支持按键进行快速的查找、插入和删除操作,并且它还具有自动排序的功能,可以让我们在需要对集合进行排序时使用它。
在创建 SortedDictionary 对象时,我们需要指定排序器。比如,我们要创建一个按照字符串长度排序的 SortedDictionary 。代码如下:
var dict = new SortedDictionary<string, int>(new StringLengthComparer());
其中,StringLengthComparer 是自定义的一个 IComparer 接口的实现类。其代码如下:
public class StringLengthComparer : IComparer<string>
{
public int Compare(string x, string y)
{
if (x.Length < y.Length)
return -1;
if (x.Length > y.Length)
return 1;
return 0;
}
}
我们通过实现 IComparer 接口,来实现按照字符串长度比较的功能。
我们可以使用 Add() 方法向 SortedDictionary 中插入键值对。
dict.Add("hello", 5);
dict.Add("world", 5);
dict.Add("this", 4);
dict.Add("is", 2);
dict.Add("a", 1);
dict.Add("test", 4);
插入的顺序并不重要,SortedDictionary 会自动根据排序器对其进行排序。
我们可以使用foreach循环遍历 SortedDictionary 中的元素。比如,我们想获取“长度最大”的键值对,代码如下:
foreach (var kvp in dict.Reverse())
{
Console.WriteLine($"{kvp.Key}: {kvp.Value}");
break;
}
其中,我们使用了 Reverse() 方法,将 SortedDictionary 集合反转,然后遍历第一个元素。输出结果为:
world: 5
我们可以使用 Remove() 方法从 SortedDictionary 中删除一个元素。比如,我们可以删除键为“test”的元素:
dict.Remove("test");
SortedDictionary 具有自动排序的功能,适用于需要对集合进行排序的场景。同时,基于红黑树的实现方式,使得它对于查找、插入和删除操作都具有较好的性能。