C# SortedList用法示例介绍

  • 如何创建一个SortedList?
  • 如何从SortedList中删除元素?
  • 如何在SortedList中检查键/值对的可用性?
目录在C#中, SortedList是键/值对的集合, 这些键/值对根据键进行排序。默认情况下, 此集合按升序对键/值对进行排序。它具有通用和非通用类型的集合。通用SortedList定义在System.Collections.Generic命名空间, 而非通用SortedList在下面定义系统集合命名空间, 这里我们将讨论非通用类型的SortedList。
重要事项:
  • SortedList类实现IEnumerable, ICollection, 词典和可克隆接口。
  • 在SortedList中, 可以通过元素的键或索引来访问元素。
  • SortedList对象在内部维护两个数组来存储列表的元素, 即, 一个数组用于键, 另一个数组用于关联的值。
  • 在此, 键不能为null, 但值可以为null。
  • SortedList对象的容量是它可以容纳的键/值对的数量。
  • 在SortedList中, 不允许重复的键。
  • 在SortedList中, 由于非通用集合, 你可以存储相同类型和不同类型的值。如果在程序中使用通用SortedList, 则值的类型必须相同。
  • 在SortedList中, 你不能将不同数据类型的键存储在同一SortedList中, 因为编译器将引发异常。因此, 始终将键添加到相同类型的SortedList中。
  • 你也可以将SortedList的键/值对转换为DictionaryEntry。
如何创建一个SortedList? SortedList类提供6用于创建SortedList的不同类型的构造函数, 这里我们仅使用SortedList()构造函数。要了解有关SortedList的构造函数的更多信息, 请参阅C#| SortedList类.
SortedList():它用于创建SortedList类的实例, 该实例为空, 具有默认的初始容量, 并根据添加到SortedList对象的每个键实现的IComparable接口进行排序。
第1步:借助using关键字, 在程序中包含System.Collections命名空间:
using System.Collections;

第2步:使用SortedList类创建一个SortedList, 如下所示:
SortedList list_name = new SortedList();

第三步:如果要在SortedList中添加键/值对, 请使用Add()方法在你的SortedList中添加键/值对。而且, 你也可以在不使用Add()方法的情况下将键/值对存储在SortedList中, 这种语法称为集合初始化语法, 如以下示例所示。
步骤4:使用以下命令访问SortedList的键/值对三不同的方式:
for循环:
你可以使用for循环访问SortedList的键/值对。
例子:
for ( int x = 0; x < my_slist1.Count; x++) { Console.WriteLine( "{0} and {1}" , my_slist1.GetKey(x), my_slist1.GetByIndex(x)); }

使用索引:
你可以使用索引访问SortedList的各个值。你需要将键或索引作为参数传递, 以找到相应的值。如果指定的键不可用, 则编译器将引发错误。
例子:
Console.WriteLine( "Value is:{0}" , my_slist1[1.04]); string x = ( string )my_slist[1.02]; Console.WriteLine(x);

foreach循环:
你可以使用foreach循环来访问SortedList的键/值对。
例子:
foreach (DictionaryEntry pair in my_slist1) { Console.WriteLine( "{0} and {1}" , pair.Key, pair.Value); }

例子:
//C# program to illustrate how //to create a sortedlist using System; using System.Collections; class GFG {//Main Method static public void Main() {//Creating a sortedlist //Using SortedList class SortedList my_slist1 = new SortedList(); //Adding key/value pairs in //SortedList using Add() method my_slist1.Add(1.02, "This" ); my_slist1.Add(1.07, "Is" ); my_slist1.Add(1.04, "SortedList" ); my_slist1.Add(1.01, "Tutorial" ); foreach (DictionaryEntry pair in my_slist1) { Console.WriteLine( "{0} and {1}" , pair.Key, pair.Value); } Console.WriteLine(); //Creating another SortedList //using Object Initializer Syntax //to initalize sortedlist SortedList my_slist2 = new SortedList() { { "b.09" , 234 }, { "b.11" , 395 }, { "b.01" , 405 }, { "b.67" , 100 }}; foreach (DictionaryEntry pair in my_slist2) { Console.WriteLine( "{0} and {1}" , pair.Key, pair.Value); } } }

输出如下:
1.01 and Tutorial1.02 and This1.04 and SortedList1.07 and Isb.01 and 405b.09 and 234b.11 and 395b.67 and 100

如何从SortedList中删除元素?
  • 明确:此方法用于从SortedList对象中删除所有元素。
  • 去掉:此方法用于从SortedList对象中删除具有指定键的元素。
  • RemoveAt:此方法用于删除SortedList对象指定索引处的元素。
例子:
//C# program to illustrate how to //remove key/value pairs from //the sortedlist using System; using System.Collections; class GFG {//Main Method static public void Main() {//Creating a sortedlist //Using SortedList class SortedList my_slist = new SortedList(); //Adding key/value pairs in SortedList //Using Add() method my_slist.Add(1.02, "This" ); my_slist.Add(1.07, "Is" ); my_slist.Add(1.04, "SortedList" ); my_slist.Add(1.01, "Tutorial" ); foreach (DictionaryEntry pair in my_slist) { Console.WriteLine( "{0} and {1}" , pair.Key, pair.Value); } Console.WriteLine(); //Remove value having 1.07 key //Using Remove() method my_slist.Remove(1.07); //After Remove() method foreach (DictionaryEntry pair in my_slist) { Console.WriteLine( "{0} and {1}" , pair.Key, pair.Value); } Console.WriteLine(); //Remove element at index 2 //Using RemoveAt() method my_slist.RemoveAt(2); //After RemoveAt() method foreach (DictionaryEntry pair in my_slist) { Console.WriteLine( "{0} and {1}" , pair.Key, pair.Value); } Console.WriteLine(); //Remove all key/value pairs //Using Clear method my_slist.Clear(); Console.WriteLine( "The total number of key/value pairs" + " present in my_slist:{0}" , my_slist.Count); } }

输出如下:
1.01 and Tutorial1.02 and This1.04 and SortedList1.07 and Is1.01 and Tutorial1.02 and This1.04 and SortedList1.01 and Tutorial1.02 and ThisThe total number of key/value pairs present in my_slist:0

如何在SortedList中检查键/值对的可用性? 在SortedList中, 可以使用以下方法检查给定对是否存在:
  • 包含:此方法用于检查SortedList对象是否包含特定键。
  • ContainsKey:此方法用于检查SortedList对象是否包含特定键。
  • 包含值:此方法用于检查SortedList对象是否包含特定值。
例子:
//C# program to illustrate how to //check the given key or value //present in the sortedlist or not using System; using System.Collections; class GFG {//Main Method static public void Main() {//Creating a sortedlist //Using SortedList class SortedList my_slist = new SortedList(); //Adding key/value pairs in //SortedList using Add() method my_slist.Add(1.02, "This" ); my_slist.Add(1.07, "Is" ); my_slist.Add(1.04, "SortedList" ); my_slist.Add(1.01, "Tutorial" ); //Using Contains() method to check //the specified key is present or not if (my_slist.Contains(1.02) == true ) { Console.WriteLine( "Key is found...!!" ); }else { Console.WriteLine( "Key is not found...!!" ); }//Using ContainsKey() method to check //the specified key is present or not if (my_slist.ContainsKey(1.03) == true ) { Console.WriteLine( "Key is found...!!" ); } else { Console.WriteLine( "Key is not found...!!" ); }//Using ContainsValue() method to check //the specified value is present or not if (my_slist.ContainsValue( "Is" ) == true ) { Console.WriteLine( "Value is found...!!" ); }else { Console.WriteLine( "Value is not found...!!" ); } } }

【C# SortedList用法示例介绍】输出如下:
Key is found...!!Key is not found...!!Value is found...!!

    推荐阅读