C# 排序列表(SortedList)

C# 集合 C# 集合

SortedList 類代表了一系列按照鍵來(lái)排序的鍵/值對(duì),這些鍵值對(duì)可以通過(guò)鍵和索引來(lái)訪問(wèn)。

排序列表是數(shù)組和哈希表的組合。它包含一個(gè)可使用鍵或索引訪問(wèn)各項(xiàng)的列表。如果您使用索引訪問(wèn)各項(xiàng),則它是一個(gè)動(dòng)態(tài)數(shù)組(ArrayList),如果您使用鍵訪問(wèn)各項(xiàng),則它是一個(gè)哈希表(Hashtable)。集合中的各項(xiàng)總是按鍵值排序。

SortedList 類的方法和屬性

下表列出了 SortedList 類的一些常用的 屬性

屬性描述
Capacity 獲取或設(shè)置 SortedList 的容量。
Count獲取 SortedList 中的元素個(gè)數(shù)。
IsFixedSize獲取一個(gè)值,表示 SortedList 是否具有固定大小。
IsReadOnly獲取一個(gè)值,表示 SortedList 是否只讀。
Item獲取或設(shè)置與 SortedList 中指定的鍵相關(guān)的值。
Keys獲取 SortedList 中的鍵。
Values獲取 SortedList 中的值。

下表列出了 SortedList 類的一些常用的 方法

序號(hào)方法名 & 描述
1public virtual void Add( object key, object value );
向 SortedList 添加一個(gè)帶有指定的鍵和值的元素。
2public virtual void Clear();
從 SortedList 中移除所有的元素。
3public virtual bool ContainsKey( object key );
判斷 SortedList 是否包含指定的鍵。
4public virtual bool ContainsValue( object value );
判斷 SortedList 是否包含指定的值。
5public virtual object GetByIndex( int index );
獲取 SortedList 的指定索引處的值。
6public virtual object GetKey( int index );
獲取 SortedList 的指定索引處的鍵。
7public virtual IList GetKeyList();
獲取 SortedList 中的鍵。
8public virtual IList GetValueList();
獲取 SortedList 中的值。
9public virtual int IndexOfKey( object key );
返回 SortedList 中的指定鍵的索引,索引從零開(kāi)始。
10public virtual int IndexOfValue( object value );
返回 SortedList 中的指定值第一次出現(xiàn)的索引,索引從零開(kāi)始。
11public virtual void Remove( object key );
從 SortedList 中移除帶有指定的鍵的元素。
12public virtual void RemoveAt( int index );
移除 SortedList 的指定索引處的元素。
13public virtual void TrimToSize();
設(shè)置容量為 SortedList 中元素的實(shí)際個(gè)數(shù)。

實(shí)例

下面的實(shí)例演示了排序列表(SortedList)的概念:

using System;
using System.Collections;

namespace CollectionsApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         SortedList sl = new SortedList();

         sl.Add("001", "Zara Ali");
         sl.Add("002", "Abida Rehman");
         sl.Add("003", "Joe Holzner");
         sl.Add("004", "Mausam Benazir Nur");
         sl.Add("005", "M. Amlan");
         sl.Add("006", "M. Arif");
         sl.Add("007", "Ritesh Saikia");

         if (sl.ContainsValue("Nuha Ali"))
         {
            Console.WriteLine("This student name is already in the list");
         }
         else
         {
            sl.Add("008", "Nuha Ali");
         }

         // 獲取鍵的集合 
         ICollection key = sl.Keys;

         foreach (string k in key)
         {
            Console.WriteLine(k + ": " + sl[k]);
         }
      }
   }
}

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:

001: Zara Ali
002: Abida Rehman
003: Joe Holzner
004: Mausam Banazir Nur
005: M. Amlan 
006: M. Arif
007: Ritesh Saikia
008: Nuha Ali

C# 集合 C# 集合