C# SortedList详解与使用示例

0 下载量 110 浏览量 更新于2024-08-29 收藏 64KB PDF 举报
"本文主要介绍了C#中的SortedList类,它是键值对的有序集合,既能根据键排序,也能通过索引访问。SortedList结合了Hashtable和Array的特点,提供了多种访问方式。它内部有两个数组分别存储键和值,并且元素以键的IComparable或IComparer方式进行排序。SortedList不允许重复键,当添加、删除元素时,索引会自动调整以保持排序顺序。" 在C#编程中,SortedList是.NET框架中System.Collections命名空间的一个类,它是一个双端口容器,用于存储键值对。SortedList的主要特点是它的元素总是按照键进行排序,这使得它在需要有序数据的场景下非常有用。与HashMap或Dictionary不同,SortedList在内部维护着两个独立的数组,一个是键数组,另一个是对应的值数组。 1. 添加元素: 使用`Add`方法可以向SortedList添加新的键值对,该方法接受一个键和一个值作为参数。例如,`sortedList.Add("key", "value")`。如果尝试添加的键已存在,SortedList不会抛出异常,而是会更新对应的值。 2. 访问元素: - **通过键访问**:使用索引器`Item`属性,如`sortedList["key"]`,这与Hashtable类似。 - **通过索引访问**:使用`GetByIndex`和`SetByIndex`方法,这与Array类似,例如`sortedList.GetByIndex(index)`获取指定索引的键值对,`sortedList.SetByIndex(index, keyValue)`设置指定索引的键值对。 3. 删除元素: 可以通过键来删除元素,如`sortedList.Remove("key")`,这将删除键及其关联的值。删除后,索引会自动调整。 4. 容量管理: 容量是指SortedList可以容纳的元素数量。它会随着元素的添加而自动增长。可以通过`Capacity`属性读取或设置容量,使用`TrimToSize`方法可以将容量调整为实际元素的数量。 5. 排序依据: 默认情况下,SortedList使用键的IComparable接口进行排序。如果需要自定义排序规则,可以在构造函数中传递一个IComparer实例。 6. 索引和顺序: 索引基于排序顺序,添加和删除元素时,索引会随之改变以保持排序。这意味着元素的位置可能会因添加或移除其他元素而改变。 7. 遍历SortedList: 可以使用`GetEnumerator`方法遍历SortedList,这将返回一个枚举器,按照排序顺序依次访问每个键值对。 在实际应用中,SortedList适合需要快速查找且数据需要保持有序的场景,比如创建一个按字母顺序排列的人名列表。但需要注意的是,由于排序机制,其性能可能略低于无序集合,如Dictionary,所以在追求效率时应谨慎选择。 SortedList是C#中一种强大的数据结构,结合了动态数组和哈希表的优点,提供了灵活的数据访问和排序功能。开发者可以根据具体需求选择合适的数据结构,以实现最优的性能和代码可读性。