SortedList <>,SortedDictionary <>和Dictionary <>

我发现SortedList<TKey, TValue> SortedDictionary<TKey, TValue>Dictionary<TKey, TValue>实现相同的接口。

  1. 什么时候应该selectSortedListSortedDictionary over Dictionary
  2. SortedListSortedDictionary在应用程序方面有什么区别?
  1. 当迭代两者中的元素时,元素将被sorting。 与Dictionary<T,V>

  2. MSDN解决SortedList<T,V>SortedDictionary<T,V>之间的区别:

SortedDictionary(TKey,TValue)generics类是一个O(log n)检索的二叉search树 ,其中n是字典中元素的数量。 在这方面,它类似于SortedList(TKey,TValue)generics类。 这两个类有相似的对象模型,都有O(log n)检索。 这两个类别在内存使用和插入和删除速度方面存在差异:

SortedList(TKey,TValue)比SortedDictionary(TKey,TValue)使用更less的内存。

对于未sorting的数据,SortedDictionary(TKey,TValue)具有更快的插入和删除操作:O(log n)与SortedList(TKey,TValue)的O(n)相对。

如果列表从已sorting数据一次全部填充,则SortedList(TKey,TValue)比SortedDictionary(TKey,TValue)快。

在这里输入图像说明

我会提到字典之间的区别。

上图显示Dictionary<K,V>在任何情况下均等于或高于Sorted模拟,但如果要求sorting元素,例如打印元素,则selectSorted 1。

Src: http : //people.cs.aau.dk/~normark/oop-csharp/html/notes/collections-note-time-complexity-dictionaries.html

  1. 当你想迭代集合时,按键sorting。 如果你不需要对数据进行sorting,那么最好只用一个字典,它会有更好的性能。

  2. SortedList和SortedDictionary几乎可以做同样的事情,但是实现方式不同,因此在这里解释了不同的优点和缺点。

总结性能testing的结果- SortedList与SortedDictionary vs. Dictionary与Hashtable ,不同情况下的最佳到最差的结果:

内存使用情况:

 SortedList<T,T> Hashtable SortedDictionary<T,T> Dictionary<T,T> 

插入:

 Dictionary<T,T> Hashtable SortedDictionary<T,T> SortedList<T,T> 

search操作:

 Hashtable Dictionary<T,T> SortedList<T,T> SortedDictionary<T,T> 

foreach循环操作

 SortedList<T,T> Dictionary<T,T> Hashtable SortedDictionary<T,T>