a SortedList<TKey,TValue>和a 之间有什么实际的实际区别SortedDictionary<TKey,TValue>吗?在任何情况下,您会专门使用一种而不是另一种吗?
SortedList<TKey,TValue>
SortedDictionary<TKey,TValue>
是的-它们的性能特征差异很大。最好叫它们SortedList,SortedTree因为这更紧密地反映了实现。
SortedList
SortedTree
看看MSDN文档为他们每个人(的SortedList,SortedDictionary),用于在不同的situtations不同的操作细节表现。这是一个不错的摘要(来自SortedDictionary文档):
SortedDictionary
的SortedDictionary<TKey, TValue>通用类是O(log n)的检索,其中n是字典中的元件的数目的二进制搜索树。在这方面,它类似于 SortedList<TKey, TValue>泛型类。这两个类具有相似的对象模型,并且都具有O(log n)检索。这两类的区别在于内存使用以及插入和移除的速度: SortedList<TKey, TValue>使用的内存少于SortedDictionary<TKey, TValue>。 SortedDictionary<TKey, TValue>对未排序的数据O(log n)具有更快的插入和删除操作,而对O的O(n)具有更快的插入和删除操作 SortedList<TKey, TValue>。 如果从排序数据中一次填充列表,SortedList<TKey, TValue>则速度比快 SortedDictionary<TKey, TValue>。
的SortedDictionary<TKey, TValue>通用类是O(log n)的检索,其中n是字典中的元件的数目的二进制搜索树。在这方面,它类似于 SortedList<TKey, TValue>泛型类。这两个类具有相似的对象模型,并且都具有O(log n)检索。这两类的区别在于内存使用以及插入和移除的速度:
SortedDictionary<TKey, TValue>
SortedList<TKey, TValue>
SortedList<TKey, TValue>使用的内存少于SortedDictionary<TKey, TValue>。
SortedDictionary<TKey, TValue>对未排序的数据O(log n)具有更快的插入和删除操作,而对O的O(n)具有更快的插入和删除操作 SortedList<TKey, TValue>。
如果从排序数据中一次填充列表,SortedList<TKey, TValue>则速度比快 SortedDictionary<TKey, TValue>。
(SortedList实际上是维护排序后的数组,而不是使用树。它仍然使用二进制搜索来查找元素。)