Previous topicNext topic
Help > 开发指南 > 编程基础 > 数据处理 > 字典 >
SortedDictionary

表示根据键进行排序的键/值对的字典集合。我们添加进此字典中的键值对会自动地被集合根据Key进行重新排序。这在某些场合会比较有用。

Vb.Net
'new 时必须为泛型,可以指定比较器(如果你知道怎么使用比较器的话),不可指定容量
Dim sd As SortedDictionary(Of Integer, String) = New SortedDictionary(Of Integer, String)()
sd.Add(9, "九")
sd.Add(8, "八")
sd.Add(7, "七")
sd.Add(6, "六")
sd.Add(1, "一")
sd.Add(5, "五")
sd.Add(3, "三")
sd.Add(2, "二")
Proj.MsgDebug.Add("n遍历排序字典:")

For Each item As KeyValuePair(Of Integer,String) In sd
    Proj.MsgDebug.Add("Key={0},Value={1}", item.Key, item.Value)
Next

Proj.MsgDebug.Add("n获取元素的排序类型:n {0}", sd.Comparer)
'count指的是字典的实际元素个数而不是指容量
Proj.MsgDebug.Add("n获取键/值对的数目:n {0}", sd.Count)
'item可以为key赋值,如果已经赋值过,则修改它的值,如果 key 不存在则会报错
Proj.MsgDebug.Add("n获取或设置指定键的值: n item[6]:{0}", sd(6))
Proj.MsgDebug.Add("n获取键的集合: Keys ")

For Each item As Integer In sd.Keys
    Proj.MsgDebug.Add(" " & item)
Next

Proj.MsgDebug.Add("n获取值的集合:values ")

For Each item As String In sd.Values
    Proj.MsgDebug.Add(" " & item)
Next
'返回结果:
'返回结果:n遍历排序字典:
'返回结果:Key=1,Value=一
'返回结果:Key=2,Value=二
'返回结果:Key=3,Value=三
'返回结果:Key=5,Value=五
'返回结果:Key=6,Value=六
'返回结果:Key=7,Value=七
'返回结果:Key=8,Value=八
'返回结果:Key=9,Value=九
'返回结果:n获取元素的排序类型:n System.Collections.Generic.GenericComparer`1[System.Int32]
'返回结果:n获取键/值对的数目:n 8
'返回结果:n获取或设置指定键的值: n item[6]:六
'返回结果:n获取键的集合: Keys
'返回结果: 1
'返回结果: 2
'返回结果: 3
'返回结果: 5
'返回结果: 6
'返回结果: 7
'返回结果: 8
'返回结果: 9
'返回结果:n获取值的集合:values
'返回结果: 一
'返回结果: 二
'返回结果: 三
'返回结果: 五
'返回结果: 六
'返回结果: 七
'返回结果: 八
'返回结果: 九

C#
//new 时必须为泛型,可以指定比较器(如果你知道怎么使用比较器的话),不可指定容量
SortedDictionary<int,string> sd = new SortedDictionary<int,string>();
sd.Add(9,"九");
sd.Add(8,"八");
sd.Add(7,"七");
sd.Add(6,"六");
sd.Add(1,"一");
sd.Add(5,"五");
sd.Add(3,"三");
sd.Add(2,"二");
Proj.MsgDebug.Add( "n遍历排序字典:");

foreach (var item in sd)
{
    Proj.MsgDebug.Add( "Key={0},Value={1}",item.Key,item.Value);
}
Proj.MsgDebug.Add("n获取元素的排序类型:n {0}", sd.Comparer);
// count指的是字典的实际元素个数而不是指容量
Proj.MsgDebug.Add( "n获取键/值对的数目:n {0}", sd.Count);
//item可以为key赋值,如果已经赋值过,则修改它的值,如果 key 不存在则会报错
Proj.MsgDebug.Add("n获取或设置指定键的值: n item[6]:{0}",sd[6]);
Proj.MsgDebug.Add("n获取键的集合: Keys ");
foreach (var item in sd.Keys)
    Proj.MsgDebug.Add(" " + item);

Proj.MsgDebug.Add( "n获取值的集合:values ");
foreach (var item in sd.Values)
    Proj.MsgDebug.Add(" " + item);
//返回结果:
//返回结果:n遍历排序字典:
//返回结果:Key=1,Value=一
//返回结果:Key=2,Value=二
//返回结果:Key=3,Value=三
//返回结果:Key=5,Value=五
//返回结果:Key=6,Value=六
//返回结果:Key=7,Value=七
//返回结果:Key=8,Value=八
//返回结果:Key=9,Value=九
//返回结果:n获取元素的排序类型:n System.Collections.Generic.GenericComparer`1[System.Int32]
//返回结果:n获取键/值对的数目:n 8
//返回结果:n获取或设置指定键的值: n item[6]:六
//返回结果:n获取键的集合: Keys
//返回结果: 1
//返回结果: 2
//返回结果: 3
//返回结果: 5
//返回结果: 6
//返回结果: 7
//返回结果: 8
//返回结果: 9
//返回结果:n获取值的集合:values
//返回结果: 一
//返回结果: 二
//返回结果: 三
//返回结果: 五
//返回结果: 六
//返回结果: 七
//返回结果: 八
//返回结果: 九