Share via


常用的集合型別

集合型別是資料集合的一般變形,例如雜湊表、佇列、堆疊、集合包、字典和清單。

集合是以 ICollection 介面、IList 介面、IDictionary 介面或這些介面的泛型版本為基礎。 IList 介面和 IDictionary 介面都衍生自 ICollection 介面,因此所有集合都是直接或間接以 ICollection 介面為基礎。 在以 IList 介面為基礎的集合 (例如 ArrayArrayListList<T>) 或直接以 ICollection 介面為基礎的集合 (例如 QueueConcurrentQueue<T>StackConcurrentStack<T>LinkedList<T>) 中,每個項目都只含一個值。 在以 IDictionary 介面為基礎的集合 (例如 HashtableSortedList 類別、Dictionary<TKey, TValue>SortedList<TKey, TValue> 泛型類別),或以 ConcurrentDictionary<TKey, TValue> 類別為基礎的集合中,每個項目都包含一個索引鍵和一個值。 KeyedCollection<TKey, TItem> 類別是唯一的,因為它是一個數值清單,且數值中內嵌有索引鍵,因此它的行為既像清單也像字典。

泛型集合是強型別的最佳解決方案。 但若您的語言不支援泛型,System.Collections 命名空間 (Namespace) 便會包含基底集合,例如 CollectionBaseReadOnlyCollectionBaseDictionaryBase,這些都是抽象基底類別,可以擴充來建立強型別 (Strongly Typed) 的集合類別。 在需要有效率的多執行緒集合存取時,請使用 System.Collections.Concurrent 命名空間中的泛型集合。

集合可以變動,取決於如何儲存元素、如何將它們排序、如何執行搜尋,以及如何進行比較。 Queue 類別和 Queue<T> 泛型類別提供先進先出清單,而 Stack 類別和 Stack<T> 泛型類別則提供後進先出清單。 SortedList 類別和 SortedList<TKey, TValue> 泛型類別提供 Hashtable 類別和 Dictionary<TKey, TValue> 泛型類別的排序版本。 HashtableDictionary<TKey, TValue> 的元素只能藉元素的索引鍵來存取,但 SortedListKeyedCollection<TKey, TItem> 的元素則可藉索引鍵或元素索引其中之一來存取。 所有集合中的索引都是以零起始,除了 Array 之外,它允許不是以零起始的陣列。

只要物件型別實作 IEnumerableIEnumerable<T>,LINQ to Objects 功能就可讓您使用 LINQ 查詢以存取記憶體中的物件。 LINQ 查詢提供一般模式以存取資料,比標準的 foreach 迴圈 (Loop) 更精簡、可讀性更高,並提供篩選、排序和群組功能。 LINQ 查詢也可以提升效能。 如需詳細資訊,請參閱 LINQ to Objects平行 LINQ (PLINQ)

相關主題

標題

說明

Array 集合型別

說明允許將陣列當做集合一般處理的陣列功能。

ArrayList 和 List 集合型別

說明泛型和非泛型清單的功能,這是最常使用的集合型別。

Hashtable 和 Dictionary 集合型別

說明泛型和非泛型雜湊式字典型別的功能。

排序集合型別

說明提供清單和集合之排序功能的類別。

Queue 集合型別

說明泛型和非泛型佇列的功能。

Stack 集合型別

說明泛型和非泛型堆疊的功能。

HashSet 集合型別

說明泛型 System.Collections.Generic.HashSet<T> 集合型別。

HashSet 和 LINQ 設定作業

說明 System.Collections.Generic.HashSet<T> 集合型別提供的設定作業以及 LINQ 設定作業。

集合和資料結構

討論 .NET Framework 中可用的各種集合型別,包括堆疊、佇列、清單、陣列和結構。

.NET Framework 中的泛型

描述泛型功能,其中包括 .NET Framework 所提供的泛型集合、委派和介面。 此外,還提供連結以連至 C#、Visual Basic 和 Visual C++ 的功能說明文件,以及連至像是反映 (Reflection) 等支援技術的說明文件。

參考資料

System.Collections

System.Collections.Generic

System.Collections.ICollection

System.Collections.Generic.ICollection<T>

System.Collections.IList

System.Collections.Generic.IList<T>

System.Collections.IDictionary

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