SortedList <>,SortedDictionary <>和Dictionary <>
我发现SortedList<TKey, TValue>
SortedDictionary<TKey, TValue>
和Dictionary<TKey, TValue>
实现相同的接口。
- 什么时候应该select
SortedList
和SortedDictionary
overDictionary
? -
SortedList
和SortedDictionary
在应用程序方面有什么区别?
-
当迭代两者中的元素时,元素将被sorting。 与
Dictionary<T,V>
。 -
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
-
当你想迭代集合时,按键sorting。 如果你不需要对数据进行sorting,那么最好只用一个字典,它会有更好的性能。
-
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>