C# SortedList (排序列表)

  • SortedList

    SortedList类表示键和值对的集合,这些键和值对按键排序,并且可以通过键和索引进行访问。排序列表是数组和哈希表的组合。它包含可以使用键或索引访问的项目列表。如果使用索引访问项目,则为ArrayList;如果使用键访问项目,则为Hashtable。项目集合始终按键值排序。
  • SortedList类的方法和属性

    SortedList 类的方法和属性
    下表列出了 SortedList 类的一些常用属性-
    属性 功能
    Capacity 获取或设置SortedList的容量。
    Count 获取SortedList中包含的元素数。
    IsFixedSize 获取一个值,该值指示SortedList是否具有固定大小。
    IsReadOnly 获取一个值,该值指示SortedList是否为只读。
    Item 获取并设置与SortedList中的特定键关联的值。
    Keys 获取SortedList中的键。
    Values 获取SortedList中的值。
    下表列出了SortedList类的一些常用方法-
    方法 功能
    public virtual void Add(object key, object value); 将具有指定键和值的元素添加到SortedList中。
    public virtual void Clear(); 从SortedList中删除所有元素。
    public virtual bool ContainsKey(object key); 确定SortedList是否包含特定键。
    public virtual bool ContainsValue(object value); 确定SortedList是否包含特定值。
    public virtual object GetByIndex(int index); 获取SortedList指定索引处的值。
    public virtual object GetKey(int index); 获取SortedList指定索引处的键。
    public virtual IList GetKeyList(); 获取SortedList中的键。
    public virtual IList GetValueList(); 获取SortedList中的值。
    public virtual int IndexOfKey(object key); 返回SortedList中指定键的从零开始的索引。
    public virtual int IndexOfValue(object value); 返回SortedList中第一次出现的指定值的从零开始的索引。
    public virtual void Remove(object key); 从SortedList中移除具有指定键的元素。
    public virtual void RemoveAt(int index); 在SortedList的指定索引处删除元素。
    public virtual void TrimToSize(); 将容量设置为SortedList中元素的实际数量。
  • 示例

    以下示例演示了概念-
    
    using System;
    using System.Collections;
    
    namespace CollectionsApplication {
       class Program {
          static void Main(string[] args) {
             SortedList sl = new SortedList();
             
             sl.Add("001", "Alex Moo");
             sl.Add("002", "Abida Rehman");
             sl.Add("003", "Joe Holzner");
             sl.Add("004", "Mausam Benazir Nur");
             sl.Add("005", "M. Amlan");
             sl.Add("006", "M. Arif");
             sl.Add("007", "Ritesh Saikia");
             
             if (sl.ContainsValue("Feng Li")) {
                Console.WriteLine("This student name is already in the list");
             } else {
                sl.Add("008", "Feng Li");
             }
    
             // get a collection of the keys. 
             ICollection key = sl.Keys;
    
             foreach (string k in key) {
                Console.WriteLine(k + ": " + sl[k]);
             }
          }
       }
    }
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    001: Alex Moo
    002: Abida Rehman
    003: Joe Holzner
    004: Mausam Banazir Nur
    005: M. Amlan 
    006: M. Arif
    007: Ritesh Saikia
    008: Feng Li