SortedList 类
https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.sortedlist?view=netcore-3.1
SortedList对象是可以排序的字典对象。SortedList元素可通过其键来访问,也可以通过其索引来访问。 SortedList在内部维护两个数组以存储列表中的元素,一个数组用于存储键,另一个数组用于存储相关联的值。
SortedList类中的索引顺序是基于排序后的顺序。当添加元素时,元素将按正确的排序顺序插入SortedList中,同时索引会相应地进行调整。当移除元素时,索引也会相应地进行调整。因此,当在SortedList中添加或移除元素时,特定键/值对的索引可能会更改。
由于要进行排序,所以在SortedList上操作比在Hashtable上操作要慢。但是,SortedList允许通过相关联键或通过索引对值进行访问,可提供更高的灵活性。
属性
Capacity | 获取或设置 SortedList 对象的容量。 |
Count | 获取 SortedList 对象中包含的元素数。 |
Item[Object] | 获取或设置与 SortedList 对象中的特定键相关联的值。 |
Keys | 获取 SortedList 对象中的键。 |
Values | 获取 SortedList 对象中的值。 |
方法
Add(Object, Object) | 将带有指定键和值的元素添加到 SortedList 对象。 |
Clear() | 从 SortedList 对象中移除所有元素。 |
Clone() | 创建 SortedList 对象的浅表副本。 |
Contains(Object) | 确定 SortedList 对象是否包含特定键。 |
ContainsKey(Object) | 确定 SortedList 对象是否包含特定键。 |
ContainsValue(Object) | 确定 SortedList 对象是否包含特定值。 |
CopyTo(Array, Int32) | 从指定数组索引开始将 SortedList 元素复制到一维 Array 对象中。 |
Equals(Object) | 确定指定的对象是否等于当前对象。 (继承自 Object) |
GetByIndex(Int32) | 获取 SortedList 对象的指定索引处的值。 |
GetKey(Int32) | 获取 SortedList 对象的指定索引处的键。 |
GetKeyList() | 获取 SortedList 对象中的键。 |
GetValueList() | 获取 SortedList 对象中的值。 |
IndexOfKey(Object) | 返回 SortedList 对象中指定键的从零开始的索引。 |
IndexOfValue(Object) | 返回指定的值在 SortedList 对象中第一个匹配项的从零开始的索引。 |
Remove(Object) | 从 SortedList 对象中移除带有指定键的元素。 |
RemoveAt(Int32) | 移除 SortedList 对象的指定索引处的元素。 |
SetByIndex(Int32, Object) | 替换 SortedList 对象中指定索引处的值。 |
TrimToSize() | 将容量设置为 SortedList 对象中元素的实际数目。 |
示例
Module Module1
Sub Main()
Dim mySl As New SortedList
'mySl.Add(0, "zero")
mySl.Add(1, "one")
mySl.Add(2, "two")
mySl.Add(3, "three")
mySl.Add(7, "seven")
mySl.Add(8, "eight")
mySl.Add(9, "nine")
mySl.Add(4, "four")
mySl.Add(5, "five")
mySl.Add(6, "six")
'索引从0开始
Dim index As Integer = 8
Console.WriteLine("索引 {0}处的值为{1}", index, mySl.GetKey(index))
Console.WriteLine("索引 {0}处的值为{1}", index, mySl.GetByIndex(index))
Dim myKeyList As IList = mySl.GetKeyList
Dim myValueList As IList = mySl.GetValueList
Console.WriteLine(vbTab & "-KEY-" & ControlChars.Tab & "-VALUE-")
Dim i As Integer
For i = 0 To mySl.Count - 1
Console.WriteLine(vbTab & "{0}" & ControlChars.Tab & "{1}", myKeyList(i), myValueList(i))
Next
Console.Read()
End Sub
End Module