C# SortedList<TKey, TValue>

在 Java 中没有相对应的容器。

在 C# 中,该容器与 SortedDictionary<TKey,TValue> 都是实现按照键排序的键值对的集合。区别在于实现不同。

SortedList<TKey,TValue> 底层维护一个有序数组,而不是红黑树。虽然如此,仍然不能存储键相同的键值对。在查找时使用二分查找,所以按照键查找值的时间复杂度也是 O(\log n)。这两个类的主要区别在于以下几点:

  1. SortedList<TKey,TValue> 使用数组,而 SortedDictionary<TKey,TValue> 需要维护一颗红黑树,所以前者占用内存更少。
  2. 对于未排序的数据,SortedDictionary<TKey,TValue> 插入和删除元素的时间复杂度为 O(\log n),而 SortedList<TKey,TValue> 插入删除元素的时间复杂度为 O(n)。
  3. 对于已排序的数据,将数据导入集合中,SortedList<TKey,TValue>SortedDictionary<TKey,TValue> 更快。
  4. 由于 SortedList<TKey,TValue> 底层是有序数组,所以它在访问 KeysValues 属性时不需要重新生成列表。其属性只是键和值的内部数组包装器。对集合额外有一些与索引有关的方法。

构造方法

Dictionary<TKey, TValue> 基本相同,相应的比较器为 Comparer<TKey> 而不是 IEqualityComparer<TKey>

属性

除了 Dictionary<TKey, TValue>() 中的属性,由于底层直接使用的数组,所以容器还可以设置容量。

  • Capacity:获取或设置容量。

方法

除了 Dictionary<TKey, TValue>() 中的常用方法,还有以下常用方法:

  • IndexOfKey(TKey):返回搜索到的指定键的索引。
  • IndexOfValue(TValue):返回搜索到的第一个匹配的值的索引。
  • RemoveAt(Int32):移除指定索引处的键值对。
posted @ 2025-08-19 22:06  Varc  阅读(7)  评论(0)    收藏  举报