在 Java 中没有相对应的容器。
在 C# 中,该容器与 SortedDictionary<TKey,TValue> 都是实现按照键排序的键值对的集合。区别在于实现不同。
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>更快。 - 由于
SortedList<TKey,TValue>底层是有序数组,所以它在访问Keys和Values属性时不需要重新生成列表。其属性只是键和值的内部数组包装器。对集合额外有一些与索引有关的方法。
构造方法
和 Dictionary<TKey, TValue> 基本相同,相应的比较器为 Comparer<TKey> 而不是 IEqualityComparer<TKey>。
属性
除了 Dictionary<TKey, TValue>() 中的属性,由于底层直接使用的数组,所以容器还可以设置容量。
Capacity:获取或设置容量。
方法
除了 Dictionary<TKey, TValue>() 中的常用方法,还有以下常用方法:
IndexOfKey(TKey):返回搜索到的指定键的索引。IndexOfValue(TValue):返回搜索到的第一个匹配的值的索引。RemoveAt(Int32):移除指定索引处的键值对。
