C# SortedList:排序列表

在 C# 中,SortedList 类用来表示键/值对的集合,这些键/值对按照键值进行排序,并且可以通过键或索引访问集合中的各个项。

我们可以将排序列表看作是数组和哈希表的组合,其中包含了可以使用键或索引访问各项的列表。如果您使用索引访问各项,那么它就是一个动态数组(ArrayList),如果您使用键访问各项,那么它就是一个哈希表(Hashtable)。另外,集合中的各项总是按键值进行排序。

SortedList 类的中的属性

下表列出了 SortedList 类中一些常用的属性:

属性 描述
Capacity 获取或设置排序列表中可包含的元素个数
Count 获取排序列表中的元素个数
IsFixedSize 判断排序列表是否具有固定大小
IsReadOnly 判断排序列表是否只读
Item 获取或设置排序列表中指定键所关联的值
Keys 获取一个包含排序列表中所有键的集合
Values 获取一个包含排序列表中所有值的集合

SortedList 类的中的方法

下表列出了 SortedList 类中一些常用的方法:

方法名 描述
public virtual void Add(object key, object value) 向排序列表中添加一个带有指定的键和值的元素
public virtual void Clear() 从排序列表中移除所有的元素
public virtual bool ContainsKey(object key) 判断排序列表中是否包含指定的键
public virtual bool ContainsValue(object value) 判断排序列表中是否包含指定的值
public virtual object GetByIndex(int index) 获取排序列表中指定索引处的值
public virtual object GetKey(int index) 获取排序列表中指定索引处的键
public virtual IList GetKeyList() 获取排序列表中的键
public virtual IList GetValueList() 获取排序列表中的值
public virtual int IndexOfKey(object key) 返回排序列表中指定键的索引,索引从零开始
public virtual int IndexOfValue(object value) 返回排序列表中指定值第一次出现的索引,索引从零开始
public virtual void Remove(object key) 从排序列表中移除带有指定键的元素
public virtual void RemoveAt(int index) 移除排序列表中指定索引处的元素
public virtual void TrimToSize() 将排序列表的容量设置为排序列表中元素的实际个数

关于 SortedList 类中的完整属性和方法介绍,可以查阅 C# 官方文档

【示例】下面通过示例演示 SortedList 类中属性和方法的使用:
using System;
using System.Collections;

namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args){
            SortedList sl = new SortedList();

            sl.Add("001", "小明");
            sl.Add("002", "小红");
            sl.Add("003", "小强");
            if (sl.ContainsValue("张三")){
                Console.WriteLine("该学生姓名以存在");
            }else{
                sl.Add("004", "张三");
            }

            // 获取键的集合
            ICollection key = sl.Keys;

            foreach (string k in key){
                Console.WriteLine(k + ": " + sl[k]);
            }
        }
    }
}
运行结果如下:

001: 小明
002: 小红
003: 小强
004: 张三