共用方式為


排序集合型別

System.Collections.SortedList 類別、System.Collections.Generic.SortedList<TKey, TValue> 泛型類別以及 System.Collections.Generic.SortedDictionary<TKey, TValue> 泛型類別在會實作 IDictionary 介面這方面全都類似於 Hashtable 類別與 Dictionary<TKey, TValue> 泛型類別,但它們是依索引鍵以排序次序來維護它們的元素,並且不具有雜湊資料表的 O(1) 插入和擷取特性。 這三個類別具有幾個共通的功能:

下表列出兩個排序的清單類別以及 SortedDictionary<TKey, TValue> 類別之間的一些差異。

SortedList 非泛型類別和 SortedList<TKey, TValue> 泛型類別

SortedDictionary<TKey, TValue> 泛型類別

會製作那些傳回索引鍵和值的屬性的索引,以便進行有效率的索引式擷取

非索引式擷取

擷取是 O(log n)

擷取是 O(log n)

引入運算子和移除一般是 O(n);不過,如果是已經處於排序次序的資料,引入運算子是 O(1),這樣每個元素都會加入至清單結尾 (這是假設不需要調整大小)

引入運算子和移除是 O(log n)

使用的記憶體比 SortedDictionary<TKey, TValue> 還少

使用的記憶體比 SortedList 非泛型類別和 SortedList<TKey, TValue> 泛型類別多

如需必須同時供多個執行緒存取的已排序清單或字典,您可以在衍生自 ConcurrentDictionary<TKey, TValue> 的類別中加入排序邏輯。

注意事項注意事項

如果是本身包含索引鍵的值 (例如,包含員工 ID 編號的員工資料錄),您可以經由衍生自 KeyedCollection<TKey, TItem> 泛型類別來建立索引集合,此索引集合具有清單的某些特性以及目錄的某些特性。

從 .NET Framework 4 版 開始,SortedSet<T> 類別提供於插入、刪除與搜尋後維持資料排序順序的自我平衡樹狀結構。 這個類別和 HashSet<T> 類別會實作 ISet<T> 介面。

請參閱

參考

System.Collections.IDictionary

System.Collections.Generic.IDictionary<TKey, TValue>

ConcurrentDictionary<TKey, TValue>

其他資源

常用的集合型別