C#中SortedList的用法
C#中SortedList的用法
SortedList表示键/值对的集合,这些键值对按键排序并可按照键和索引访问。随着向SortedList中添加元素,容量通过重新分配按需自动增加。可通过调用TrimToSize或通过显式设置Capacity属性减少容量。SortedList的元素将按照特定的IComparer实现(在创建SortedList时指定)或按照键本身提供的IComparable实现并依据键来进行排序。不论在哪种情况下,SortedList都不允许重复键。
虽然SortedList和Hashtable都是键/值对集合,但SortedList是自动排序的,所以速度没有Hashtable块,但前者支持键和索引的对值的访问,而Hashtable只支持键对值的访问,所以SortedList显得更加灵活。 SortedList和Hashtable一样,可以保存任意类型数据。
SortedList集合中的元素类型是DictionaryEntry。
一、SortedList定义
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class SortedList:IDictionary,ICollection,IEnumerable,ICloneale
二、SortedList优点
1、SortedList 允许通过相关联键或通过索引对值进行访问,可提供更大的灵活性。
2、可根据需要自动增大容量。
三、SortedList的构造器
SortedLIst对象的构造方法有6中,通常使用最简单的方法来构造
构造器函数 | 注释 |
SortedList () | 初始化 SortedList 类的新实例,该实例为空、具有默认初始容量并根据 IComparable 接口(此接口由添加到 SortedList 中的每个键实现)进行排序。 |
SortedList (IDictionary) | 初始化 SortedList 类的新实例,该实例包含从指定字典复制的元素、具有与所复制的元素数相同的初始容量并根据由每个键实现的 IComparable 接口排序。 |
SortedList (Int32) | 初始化 SortedList 类的新实例,该实例为空、具有指定的初始容量并根据 IComparable 接口(此接口由添加到 SortedList 中的每个键实现)进行排序。 |
四、SortedList的属性
属性名 | 注释 |
Count | 获取 SortedList 中包含的元素数。 |
IsFixedSize | 获取一个值,该值指示 SortedList是否具有固定大小。 |
IsReadOnly | 获取一个值,该值指示 SortedList是否为只读。 |
Keys | 获取包含 SortedList中的键集合 |
Values | 获取包含 SortedList中的值的 集合 |
Capacity | 获取或设置 SortedList的容量。 |
五、SortedList的方法
方法名 |
注释 |
Void Add(object key,object value) |
将带有指定键和值的元素添加到 SortedList。 |
Void Clear() |
从 SortedList 中移除所有元素。 |
Bool Contains(object key) |
确定 SortedList 是否包含特定键。 |
Bool ContainsKey(object key) |
确定 SortedList 是否包含特定键。 |
Bool ContainsValue(object value) |
确定 SortedList 是否包含特定值。 |
Void Remove(object key) |
从 SortedList 中移除带有指定键的元素。 |
Void CopyTo(Array ar,int index) |
将 SortedList 元素复制到一维 Array 实例中的指定索引位置。 |
Clone() |
创建 SortedList的浅表副本。 |
Object GetKey(int index) |
获取 SortedList 的指定索引处的键。 |
Object GetByIndex(int index) |
获取 SortedList 的指定索引处的值。 |
IDictionaryEnumerator GetEnumerator() |
返回循环访问 SortedList 的 IDictionaryEnumerator。 |
IList GetKeyList() |
获取 SortedList 中的键。 |
IList GetValueList() |
获取 SortedList 中的值。 |
Int IndexOfKey(object key) |
返回 SortedList 中指定键的从零开始的索引。 |
Int IndexOfValue(object value) |
返回指定的值在 SortedList 中第一个匹配项的从零开始的索引。 |
Void RemoveAt(int index) |
移除 SortedList 的指定索引处的元素。 |
Void SetByIndex(int index,object value) |
替换 SortedList 中指定索引处的值。 |
Void TrimToSize() |
将容量设置为 SortedList 中元素的实际数目。 |
六、SortedList的注意事项
1、SortedList 的容量是 SortedList 可以保存的元素数。SortedList 的默认初始容量为 0。随着元素添加到 SortedList 中,在需要时可以通过重新分配自动增加容量。可通过调用 TrimToSize方法 或通过显式设置 Capacity 属性减少容量。
2、SortedList 中不允许重复键。
3、SortedList的索引顺序基于排序顺序。当添加元素时,元素将按正确的排序顺序插入 SortedList,同时索引会相应地进行调整。当移除元素时,索引也会相应地进行调整。因此,当在 SortedList 中添加或移除元素时,特定键/值对的索引可能会更改。
4.当不向集合中添加新元素,则调用TrimToSize方法可用于最小化集合的内存开销。
5、通过设置 SortedList 中不存在的键值(例如,myCollection["myNonexistentKey"] = myValue),还可以使用 Item 属性添加新元素。但是,如果指定的键已经存在于 SortedList 中,则设置 Item 属性将改写旧值。相比之下,Add 方法不修改现有元素。