您的位置:首页 > 编程学习 > C# > 正文

C#中SortedList的用法

更多 时间:2014-9-16 类别:编程学习 浏览量:3045

C#中SortedList的用法

C#中SortedList的用法

 

SortedList表示键/值对的集合,这些键值对按键排序并可按照键和索引访问。随着向SortedList中添加元素,容量通过重新分配按需自动增加。可通过调用TrimToSize或通过显式设置Capacity属性减少容量。SortedList的元素将按照特定的IComparer实现(在创建SortedList时指定)或按照键本身提供的IComparable实现并依据键来进行排序。不论在哪种情况下,SortedList都不允许重复键。
 

虽然SortedList和Hashtable都是键/值对集合,但SortedList是自动排序的,所以速度没有Hashtable块,但前者支持键和索引的对值的访问,而Hashtable只支持键对值的访问,所以SortedList显得更加灵活。  SortedList和Hashtable一样,可以保存任意类型数据。


SortedList集合中的元素类型是DictionaryEntry。

 

一、SortedList定义

  •  
  •  
  • C# 代码   复制
  • 
    [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 方法不修改现有元素。

     

     

    标签:SortedList List