`

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);

 

分享到:
评论

相关推荐

    C# Dictionary和SortedDictionary的简介

    1、SortedDictionary 泛型类 SortedDictionary 泛型类是检索运算复杂度为 O(log n... SortedDictionary 可对未排序的数据执行更快的插入和移除操作:它的时间复杂度为 O(log n),而SortedList 为 O(n)。 如果使用

    Dictionary, SortedDictionary, SortedList 横向评测

    Dictionary 适合大规模数据的存储和检索,SortedDictionary 和 SortedList 适合需要排序的数据存储和检索。如果需要频繁地插入和移除元素,可以选择 SortedDictionary;如果需要频繁地检索元素,可以选择 Dictionary...

    字典 自动排序 c#

    总结来说,要在C#中实现字典自动排序,可以通过转换为`List`并使用Linq的排序方法,或者使用内置的`SortedList`和`SortedDictionary`类。同时,根据用户输入实时更新排序结果,需要监听输入事件并进行相应的处理。在...

    C#中Dictionary的用法及用途实例

    C#中的Dictionary是一个泛型集合,它用于存储键值对(Key-Value pairs),可以快速地通过键(key)来检索对应的值(value)。Dictionary类似于现实生活中的字典,它允许我们将一组“词汇”(键)与“定义”(值)...

    2024年 C# sort面试题目

    ### 2024年 C# 排序面试题目详解 #### 1. 解释 C#中 `List&lt;T&gt;....这些问题涵盖了C#排序的核心概念和技术要点,通过对这些知识点的学习和理解,可以帮助求职者更好地准备面试,并展示他们在排序算法方面的知识和技能。

    C# 集合 使用总结

    C# 提供了多种类型的集合,包括但不限于数组、ArrayList、List、HashSet、SortedSet、Stack、Queue 以及键值对集合如 Dictionary, TValue&gt; 和 SortedDictionary, TValue&gt; 等。每种集合都有其独特的特性和应用场景。 ...

    C#集合的概念

    1. Dictionary, TValue&gt;:字典集合,用于存储键值对,键和值可以是任何类型。 2. HashSet&lt;T&gt;:哈希集,用于存储唯一的值,类似于无序的不重复元素集合。 3. LinkedList&lt;T&gt;:双向链接列表,允许在列表的任何位置插入...

    C# 关于集合的程序

    8. **SortedList, TValue&gt;** 和 **SortedDictionary, TValue&gt;**: 这两者都是有序的键值对集合,SortedList按键的自然顺序排序,而SortedDictionary则使用自定义比较器。它们都提供高效的查找操作,但不支持动态添加...

    C# 各种通用类集合

    9. **SortedDictionary, TValue&gt;** 和 **SortedList, TValue&gt;**: 这两个集合类都是有序的键值对集合,不同之处在于SortedDictionary使用自定义比较器,而SortedList则根据键的自然顺序排序。 在ASP.NET Web API开发...

    实现允许多个值的排序的集合/词典的最佳方法是什么?

    在C#编程中,创建一个既能按特定值(如“Priority”)排序,又支持多值存储,并且可以通过键(Key)访问的对象集合,通常我们可以使用`SortedList`、`SortedDictionary`或自定义的数据结构。下面将详细介绍这几种...

    c#支付宝标准双接口实现

    功能:除去数组中的空值和签名参数并以字母a到z的顺序排序 输入:SortedDictionary, string&gt; dicArrayPre 过滤前的参数组 输出:Dictionary, string&gt; 去掉空值与签名参数后的新签名参数组 public static string ...

    数据结构示例程序(C#语言描述).zip

    例如,ArrayList和LinkedList对应链表,Stack和Queue分别对应栈和队列,而Dictionary, TValue&gt;和SortedDictionary, TValue&gt;可以看作键值对的树结构。此外,自定义数据结构通常涉及类或结构的设计,以及重写Equals()...

    C#数据结构--方法及其应用以及在.NET框架中相应的算法

    #### 第1章:数据结构和算法的基础概念及C#基础知识 - **数据结构与算法概述**:介绍数据结构与算法的基本定义及其重要性。数据结构是指一组特定数据的组织方式和这些数据之间的关系;而算法则是解决问题的明确步骤...

    数据结构编程

    4. **栈**:是后进先出(LIFO)的数据结构,C#中的Stack类用于实现栈操作,常见于递归算法和表达式求值。 5. **哈希表**:通过哈希函数将键映射到数组的索引上,提供快速的查找和插入操作。C#中的Dictionary类是...

    C#各种集合操作的性能总结

    而Dictionary, TValue&gt;和SortedDictionary, TValue&gt;提供了通过键快速访问值的能力,其中SortedDictionary, TValue&gt;还提供了排序的功能。 理解这些集合操作的性能特点可以帮助开发者在设计程序时选择最适合的数据...

    CSharpCollections1stEdSource:C#集合的源代码-Source code collection

    它们都按照键的自然顺序排序,但SortedDictionary提供了更好的性能。 源代码分析`CSharpCollections1stEdSource-master`可以帮助我们理解这些集合内部的工作机制,包括其数据结构、算法选择以及性能优化策略。通过...

    Assignment_sorting:字典上的作业

    在C#编程语言中,字典(Dictionary)是一种非常重要的数据结构,它允许我们通过键(Key)来高效地查找、添加和删除值(Value)。在这个名为"Assignment_sorting:字典上的作业"的项目中,很可能是要求你对字典进行一...

    选择合适的收藏

    8. **排序集合(SortedSet)** 和 **排序字典(SortedDictionary, TValue&gt;)**:这些数据结构保持元素的排序,适用于需要按顺序遍历元素或进行范围查询的场合,但插入和查找性能略低于无序版本。 9. **堆...

Global site tag (gtag.js) - Google Analytics