1、SortedList定义
System.Collections.SortedList类表示键/值对的集合,这些键值对按键排序并可按照键和索引访问。SortedList 在内部维护两个数组以存储列表中的元素;即,一个数组用于键,另一个数组用于相关联的值。每个元素都是一个可作为 DictionaryEntry 对象进行访问的键/值对。键不能为null,但值可以。
2.优点
1、SortedList 允许通过相关联键或通过索引对值进行访问,可提供更大的灵活性。
2、可根据需要自动增大容量。
3. SortedList的构造器
4、SortedList的属性
5. SortedList的方法
6、SortedList的使用示例
public class TestSortedList
{
public static void Main()
{
// 创建一个SortedList对象
SortedList mySL = new SortedList();
mySL.Add("First", "Hello");
mySL.Add("Second", "World");
mySL.Add("Third", "!");
//列举SortedList的属性、键、值
Console.WriteLine("mySL");
Console.WriteLine(" Count: {0}", mySL.Count);
Console.WriteLine(" Capacity: {0}", mySL.Capacity);
Console.WriteLine(" Keys and Values:");
PrintIndexAndKeysAndValues(mySL);
#region SortedList获得键、值列表
SortedList mySL1 = new SortedList();
mySL1.Add(1.3, "fox");
mySL1.Add(1.4, "jumped");
mySL1.Add(1.5, "over");
mySL1.Add(1.2, "brown");
mySL1.Add(1.1, "quick");
mySL1.Add(1.0, "The");
mySL1.Add(1.6, "the");
mySL1.Add(1.8, "dog");
mySL1.Add(1.7, "lazy");
//获得指定索引处的键和值
int myIndex = 3;
Console.WriteLine("The key at index {0} is {1}.", myIndex, mySL1.GetKey(myIndex));
Console.WriteLine("The value at index {0} is {1}.", myIndex, mySL1.GetByIndex(myIndex));
// 获得SortedList中的键列表和值列表
IList myKeyList = mySL1.GetKeyList();
IList myValueList = mySL1.GetValueList();
// Prints the keys in the first column and the values in the second column.
Console.WriteLine("\t-KEY-\t-VALUE-");
for (int i = 0; i < mySL1.Count; i++)
Console.WriteLine("\t{0}\t{1}", myKeyList[i], myValueList[i]);
#endregion
#region 为SortedList中的元素重新赋值
// Creates and initializes a new SortedList.
SortedList mySL2 = new SortedList();
mySL2.Add(2, "two");
mySL2.Add(3, "three");
mySL2.Add(1, "one");
mySL2.Add(0, "zero");
mySL2.Add(4, "four");
// 打印显示列表的键和值
Console.WriteLine("The SortedList contains the following values:");
PrintIndexAndKeysAndValues(mySL2);
// 获得指定键的索引
int myKey = 2;
Console.WriteLine("The key \"{0}\" is at index {1}.", myKey, mySL2.IndexOfKey(myKey));
// 获得指定值的索引
String myValue = "three";
Console.WriteLine("The value \"{0}\" is at index {1}.", myValue, mySL2.IndexOfValue(myValue));
// 重新设置指定索引处的值
mySL2.SetByIndex(3, "III");
mySL2.SetByIndex(4, "IV");
//打印显示列表的键和值
Console.WriteLine("After replacing the value at index 3 and index 4,");
PrintIndexAndKeysAndValues(mySL2);
#endregion
Console.ReadKey();
}
//打印SortedList中的键和值
public static void PrintIndexAndKeysAndValues(SortedList myList)
{
Console.WriteLine("\t-INDEX-\t-KEY-\t-VALUE-");
for (int i = 0; i < myList.Count; i++)
{
Console.WriteLine("\t[{0}]:\t{1}\t{2}", i, myList.GetKey(i), myList.GetByIndex(i));
}
Console.WriteLine();
}
}
7.备注
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 方法不修改现有元素。
键不能为 空引用(在 Visual Basic 中为 Nothing),但值可以。若要区分由于未找到指定键而返回的 空引用(在 Visual Basic 中为 Nothing) 和由于指定键的值为 空引用(在 Visual Basic 中为 Nothing) 而返回的 空引用(在 Visual Basic 中为 Nothing),请使用 Contains 方法或 ContainsKey 方法确定列表中是否存在该键。
分享到:
相关推荐
C#中List和SortedList的简介 List类是ArrayList类的泛型等效类。该类使用大小可按需动态增加的...List类和SortedList类都是C#语言中非常重要的集合类,它们提供了很多实用的方法和属性,可以满足各种不同的应用场景。
本篇文章将深入解析几种常见的集合类型:ArrayList、Queue、Hashtable、SortedList以及Stack,通过具体的代码示例和理论解释,帮助读者理解每种集合的特点与应用场景。 ### ArrayList `ArrayList`是一个动态数组,...
7. SortedList, TValue>:有序列表集合,键值对按键排序,类似于Dictionary但更注重排序。 8. SortedSet<T>:有序对象集合,按排序顺序保持的对象集合。 9. Stack<T>:堆栈集合,遵循后进先出(LIFO)原则,常用于...
SortedList是.NET Framework中的一个类,它继承自DictionaryBase,是一个有序的键值对集合。它的主要特点是根据键自动排序,这在处理大量数据时非常有用,特别是在需要按特定顺序访问或查找元素的情况下。SortedList...
在提供的“Ch1101”文件中,可能包含了演示以上集合用法的源代码,通过分析和运行这些示例,你可以深入理解C#集合的各种特性和应用场景。同时,实践编写和修改这些程序,将有助于提升你的C#编程技能。
SortedList最合适对一列健/值对 进行排序,在排序时,是对键进行排序,SortedList 是 Hashtable 和 Array 的混合。当使用 Item 索引器属性按照元素的键访问元素时,其行为类似于 Hashtable。当使用 GetByIndex 或 ...
在C#编程中,列表(List)是一种常用的集合类,用于存储一组同类型的元素。当需要对列表中的元素进行随机排序时,可以采用多种方法。这里我们重点介绍一种基于`Random`类的方法,如标题和描述中所述。这种方法通过创建...
非泛型集合主要位于 `System.Collections` 命名空间中,包括但不限于 `ArrayList`, `Hashtable`, `Queue`, `SortedList`, `Stack` 等。这些集合在设计之初并未考虑到类型安全性的问题,因此它们只能存储 `object` ...
SortedList, TValue>是泛型集合的一种,它是一个有序的键值对集合,键和值都是泛型类型。与Dictionary, TValue>不同,SortedList, TValue>会根据键的自然顺序进行排序。这对于需要按特定顺序访问数据的情况非常有用...
5. **SortedList**:SortedList 类似于 Hashtable,但其中的键是排序的,提供了按键排序的访问能力。 6. **NameValueCollection**:NameValueCollection 是一种特殊的集合,用于存储键值对,其中键和值都是字符串。...
C#集合是编程中不可或缺的一部分,它提供了存储和管理数据的有效方式。在这篇学习笔记中,我们将探讨几个关键的集合类,包括System.Array、ArrayList、Hashtable以及SortedList,以及它们的特点和常用方法。 首先,...
9. **SortedDictionary, TValue>** 和 **SortedList, TValue>**: 这两个集合类都是有序的键值对集合,不同之处在于SortedDictionary使用自定义比较器,而SortedList则根据键的自然顺序排序。 在ASP.NET Web API开发...
Hashtable 是基于散列的键值对集合,提供快速查找,而 SortedList 是有序的键值对集合,保持插入顺序或根据键进行排序。 哈希表(如Hashtable)利用散列函数快速定位数据,通过键(Key)来访问对应的值(Value),...
5. SortedList:有序的键值对集合,根据键自动排序。 6. Stack:后进先出(LIFO)的数据结构,常用于实现堆栈操作。 7. ListDictionary、NameValueCollection、OrderedDictionary、StringCollection:针对特定用途的...
本文将详细介绍C#中的六大集合类:`ArrayList`、`Stack`、`Queue`、`Hashtable`、`SortedList`以及`NameValueCollection`。 #### 二、数组的不足与集合的优势 在深入探讨这六种集合类之前,我们首先来看一下数组的...
【C#集合概念与内置集合详解】 集合在C#中扮演着重要的角色,它是一种能够存储和管理一组特定类型数据对象的数据结构。集合解决了静态数组的局限性,允许我们在程序运行时动态添加和删除元素。在.NET框架中,C#提供...
6. **SortedList, TValue>**:SortedList类类似于Dictionary,但它内部维护了一个排序的键列表,适合需要按键排序的场景。 7. **Stack**和**Queue**:Stack是后进先出(LIFO)的数据结构,用于实现堆栈操作,如Push...