System.Collections.SortedList 類、System.Collections.Generic.SortedList 泛型類和 System.Collections.Generic.SortedDictionary 泛型類類似於 Hashtable 類和 Dictionary 泛型類,因為它們也實現 IDictionary 接口,但是它們以基於鍵的排序順序維護元素,沒有哈希表的 O(1) 插入和檢索特性。這三個類具有若干共性:
三個類都實現 System.Collections.IDictionary 接口。兩個泛型類還實現 System.Collections.Generic.IDictionary 泛型接口。
每個元素是一個鍵/值對,以進行枚舉。
非泛型 SortedList 類在被枚舉時返回 DictionaryEntry 對象,而兩個泛型類則返回 KeyValuePair 對象。
元素按照 System.Collections.IComparer 實現(對於非泛型 SortedList)或 System.Collections.Generic.IComparer 實現(對於兩個泛型類)排序。
每個類提供了返回僅包含鍵或僅包含值的集合的屬性。
下表列舉兩個排序的列表類與 SortedDictionary 類之間的一些區別。
返回鍵和值的屬性是有索引的,從而允許高效的索引檢索。
無索引的檢索。
檢索的運算復雜度為 O(log n)。
檢索的運算復雜度為 O(log n)。
插入和移除的運算復雜度一般為 O(n);但是,對於已經處於排序順序的數據,插入操作的運算復雜度為 O(1),因此每個元素都被添加到列表的末尾。(這假設不需要調整大小。)
插入和移除的運算復雜度為 O(log n)。
比 SortedDictionary 使用更少的內存。
比 SortedList 非泛型類和 SortedList 泛型類使用更多內存。
對於包含自己的鍵的值(例如,包含雇員 ID 編號的雇員記錄),可以通過從 KeyedCollection 泛型類派生創建帶鍵的集合,該集合具有列表的一些特征和字典的一些特征。