C#的Dictionary值排序和SortedDictionary键排序

阅读更多

对一个Dictionary进行键排序可以直接用SortedDictionary
SortedDictionary 泛型类是检索运算复杂度为 O(log n) 的二叉搜索树,其中 n 是字典中的元素数。 就这一点而言,它与 SortedList 泛型类相似。 这两个类具有相似的对象模型,并且都具有 O(log n) 的检索运算复杂度。
这两个类的区别在于内存的使用以及插入和移除元素的速度:
SortedList 使用的内存比 SortedDictionary 少,SortedDictionary 可对未排序的数据执行更快的插入和移除操作:
它的时间复杂度为 O(log n),而 SortedList 为 O(n),如果使用排序数据一次性填充,SortedList比 SortedDictionary 快。
每个键/值对都可以作为KeyValuePair 结构进行检索,或作为DictionaryEntry通过非泛型IDictionary接口进行检索。只要键用作SortedDictionary 中的键,它们就必须是不可变的。
SortedDictionary 中的每个键必须是唯一的。 键不能为 null,但是如果值类型 TValue 为引用类型,该值则可以为空。
SortedDictionary 需要比较器实现来执行键比较。 可以使用一个接受 comparer 参数的构造函数来指定 IComparer 泛型接口的实现;
如果不指定实现,则使用默认的泛型比较器 Comparer.Default。
如果类型 TKey 实现 System.IComparable 泛型接口,则默认比较器使用该实现。
对一个Dictionary进行值排序可以用LINQ:

Dictionary < string , string > MyDictionary = new Dictionary < string , string > ();

MyDictionary
= (from entry in MyDictionary
orderby entry.Value ascending
select entry).ToDictionary(pair
=> pair.Key, pair => pair.Value);

 

你可能感兴趣的:(C#的Dictionary值排序和SortedDictionary键排序)