在C#中,SortedDictionary是一个基于红黑树实现的键值对集合,它可以保持键的顺序。要创建一个SortedDictionary,你需要使用SortedDictionary<TKey, TValue>
类,并为其提供一个比较器(如果需要的话)。以下是一个简单的示例:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// 创建一个SortedDictionary,键和值都是整数
SortedDictionary<int, int> sortedDictionary = new SortedDictionary<int, int>();
// 添加键值对
sortedDictionary.Add(3, 30);
sortedDictionary.Add(1, 10);
sortedDictionary.Add(2, 20);
// 遍历SortedDictionary
foreach (KeyValuePair<int, int> entry in sortedDictionary)
{
Console.WriteLine($"Key: {entry.Key}, Value: {entry.Value}");
}
}
}
在这个示例中,我们创建了一个SortedDictionary<int, int>
对象,并添加了三个键值对。然后,我们遍历SortedDictionary并输出每个键值对。
如果你需要根据自定义对象创建SortedDictionary,你需要实现IComparer<TKey>
接口并提供一个比较器。例如:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// 创建一个SortedDictionary,键和值都是自定义对象
SortedDictionary<MyObject, int> sortedDictionary = new SortedDictionary<MyObject, int>(new MyObjectComparer());
// 添加键值对
sortedDictionary.Add(new MyObject(3, "three"), 30);
sortedDictionary.Add(new MyObject(1, "one"), 10);
sortedDictionary.Add(new MyObject(2, "two"), 20);
// 遍历SortedDictionary
foreach (KeyValuePair<MyObject, int> entry in sortedDictionary)
{
Console.WriteLine($"Key: {entry.Key}, Value: {entry.Value}");
}
}
}
class MyObject
{
public int Id { get; set; }
public string Name { get; set; }
public MyObject(int id, string name)
{
Id = id;
Name = name;
}
}
class MyObjectComparer : IComparer<MyObject>
{
public int Compare(MyObject x, MyObject y)
{
// 根据Id进行比较
return x.Id.CompareTo(y.Id);
}
}
在这个示例中,我们创建了一个SortedDictionary<MyObject, int>
对象,并使用自定义的比较器MyObjectComparer
对MyObject
实例进行排序。