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


    对一个Dictionary<TKey, TValue>进行键排序可以直接用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),而 SortedList<TKey,TValue> 为 O(n),如果使用排序数据一次性填充,SortedList<TKey,TValue>比 SortedDictionary<TKey, TValue> 快。
        每个键/值对都可以作为KeyValuePair<TKey, TValue> 结构进行检索,或作为DictionaryEntry通过非泛型IDictionary接口进行检索。只要键用作SortedDictionary<TKey, TValue> 中的键,它们就必须是不可变的。 
    SortedDictionary<TKey, TValue> 中的每个键必须是唯一的。 

    键不能为 null,但是如果值类型 TValue 为引用类型,该值则可以为空。

    SortedDictionary<TKey, TValue> 需要比较器实现来执行键比较。 可以使用一个接受 comparer 参数的构造函数来指定 IComparer<T> 泛型接口的实现;

    如果不指定实现,则使用默认的泛型比较器 Comparer<T>.Default。 
    如果类型 TKey 实现 System.IComparable<T> 泛型接口,则默认比较器使用该实现。
    对一个Dictionary<TKey, TValue>进行值排序可以用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);
  • 相关阅读:
    Nginx之keepalived高可用工具
    Linux安装Nginx
    Nginx解决服务器宕机问题
    前端知识小札
    SQL入门(3):定义约束/断言assertion/触发器trigger
    SQL入门(2): Oracle内置函数-字符/数值/日期/转换/NVL/分析函数与窗口函数/case_decode
    Excel VBA入门(8): 快捷键/内置常量/代码调试/错误处理/代码优化
    小学生都看得懂的C语言入门(6): 字符串
    小学生都看得懂的C语言入门(5): 指针
    小学生都看得懂的C语言入门(4): 数组与函数
  • 原文地址:https://www.cnblogs.com/masahiro/p/10131135.html
Copyright © 2020-2023  润新知