一尘不染

SortedList和SortedDictionary有什么区别?

c#

a SortedList<TKey,TValue>和a
之间有什么实际的实际区别SortedDictionary<TKey,TValue>吗?在任何情况下,您会专门使用一种而不是另一种吗?


阅读 395

收藏
2020-05-19

共1个答案

一尘不染

是的-它们的性能特征差异很大。最好叫它们SortedListSortedTree因为这更紧密地反映了实现。

看看MSDN文档为他们每个人(的SortedListSortedDictionary),用于在不同的situtations不同的操作细节表现。这是一个不错的摘要(来自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>

SortedList实际上是维护排序后的数组,而不是使用树。它仍然使用二进制搜索来查找元素。)

2020-05-19