📅  最后修改于: 2023-12-03 14:59:43.939000             🧑  作者: Mango
在C#中,SortedList
和SortedDictionary
都是用于按键排序的集合类。虽然它们都实现了IDictionary
和ICollection
接口,但在实现上还是有一些区别的。
SortedList
是一个基于数组的实现,它对其内部的元素进行排序,可以通过二分搜索快速查找元素。它的键必须是唯一的,如果尝试将一个已经存在的键添加到列表中,将会抛出一个ArgumentException
异常。以下是一些SortedList
的特性:
Capacity
属性设置初始容量以下是示例代码:
SortedList sortedList = new SortedList();
sortedList.Add(3, "three");
sortedList.Add(1, "one");
sortedList.Add(2, "two");
foreach (var key in sortedList.Keys)
{
Console.WriteLine(sortedList[key]);
}
// 输出:
// one
// two
// three
SortedDictionary
是一个基于红黑树的实现,它的键也必须是唯一的,否则会抛出ArgumentException
异常。与SortedList
不同的是,它不是按索引访问元素而是按键访问元素,因此它的查找速度比SortedList
更快。以下是一些SortedDictionary
的特性:
Capacity
属性设置初始容量以下是示例代码:
SortedDictionary<int, string> sortedDict = new SortedDictionary<int, string>();
sortedDict.Add(3, "three");
sortedDict.Add(1, "one");
sortedDict.Add(2, "two");
foreach (var key in sortedDict.Keys)
{
Console.WriteLine(sortedDict[key]);
}
// 输出:
// one
// two
// three
虽然SortedList
和SortedDictionary
都是基于键排序的集合类,但它们实现上还是有一些区别的。SortedList
基于数组实现,适用于需要频繁访问元素的场景;SortedDictionary
基于红黑树实现,适用于需要频繁添加或移除元素的场景。所以,在选择使用哪个集合类时,应该根据实际场景进行选择。