在 C# 编程中,SortedDictionary 是一个非常实用的集合类型,特别适合需要自动按键排序的场景。本文将带你从零开始掌握 C# SortedDictionary 的基本用法、常见操作以及实际应用场景,即使是编程新手也能轻松上手!

在 .NET 中,SortedDictionary<TKey, TValue> 是 System.Collections.Generic 命名空间下的一个泛型集合类。它与普通的 Dictionary 类似,但最大的区别在于:SortedDictionary 会自动按照键(Key)的升序进行排序。
这意味着,无论你以什么顺序添加元素,遍历时它们总是按 Key 的自然顺序(或自定义比较器指定的顺序)排列。这对于需要保持数据有序的场景(如排行榜、时间序列数据等)非常有用。
首先,你需要引入命名空间:
using System;using System.Collections.Generic;然后,你可以像下面这样创建一个 SortedDictionary:
// 创建一个字符串为键、整数为值的 SortedDictionarySortedDictionary<string, int> scores = new SortedDictionary<string, int>();// 添加元素scores.Add("Alice", 95);scores.Add("Bob", 88);scores.Add("Charlie", 92);// 即使插入顺序是 Alice → Bob → Charlie,// 遍历时也会按字母顺序:Alice, Bob, Charliescores["David"] = 85; // 直接赋值(如果键不存在则添加,存在则更新)int aliceScore = scores["Alice"]; // 获取值Console.WriteLine($"Alice's score: {aliceScore}");foreach (var kvp in scores){ Console.WriteLine($"{kvp.Key}: {kvp.Value}");}// 输出结果(按键字母顺序):// Alice: 95// Bob: 88// Charlie: 92// David: 85if (scores.ContainsKey("Eve")){ Console.WriteLine("Eve is in the list.");}else{ Console.WriteLine("Eve is not found.");}| 特性 | Dictionary | SortedDictionary ||------|------------------|------------------------|| 插入/查找性能 | O(1) 平均 | O(log n) || 是否自动排序 | 否 | 是 || 内存占用 | 较低 | 略高 || 适用场景 | 快速查找、无序存储 | 需要按键排序的数据 |
如果你不需要排序,优先使用 Dictionary;如果需要自动排序且对性能要求不是极端苛刻,SortedDictionary 是更优雅的选择。
默认情况下,SortedDictionary 使用键类型的默认比较器(如字符串按字母顺序,数字按大小)。但你也可以传入自定义的 IComparer 来改变排序方式:
// 按字符串长度降序排序var comparer = Comparer<string>.Create((x, y) => y.Length.CompareTo(x.Length));SortedDictionary<string, int> dict = new SortedDictionary<string, int>(comparer);dict.Add("A", 1);dict.Add("BB", 2);dict.Add("CCC", 3);// 遍历时顺序为:CCC → BB → A通过本教程,你应该已经掌握了 C# SortedDictionary 的基本用法。它是一个强大而简洁的工具,特别适合处理需要自动排序的键值对数据。记住以下几点:
希望这篇关于 .NET数据结构 中的有序字典使用教程对你有帮助!快去试试吧!
本文由主机测评网于2025-12-10发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025125908.html