常用的集合類型
集合型別代表不同的資料收集方式,例如雜湊表、佇列、堆疊、包、字典和清單。
所有集合都是直接或間接以 ICollection 或 ICollection<T> 介面為基礎。 IList 和 IDictionary 及其泛型對應項目全都衍生自這兩個介面。
在以 IList 為基礎或直接在 ICollection 上的集合中,每個元素只包含一個值。 這些類型包括:
在以 IDictionary 介面為基礎的集合中,每個元素都包含索引鍵和值。 這些類型包括:
- Hashtable
- SortedList
- SortedList<TKey,TValue>
- Dictionary<TKey,TValue>
- ConcurrentDictionary<TKey,TValue>
KeyedCollection<TKey,TItem> 類別是唯一的,因為這是將索引鍵內嵌在值內的值清單。 因此,其行為就像清單和字典一樣。
需要有效率的多執行緒集合存取時,請在 System.Collections.Concurrent 命名空間中使用泛型集合。
Queue和 Queue<T> 類別提供先進先出清單。 Stack和 Stack<T> 類別提供後進先出清單。
強類型
泛型集合是強式類型的最佳解決方案。 例如,在 List<Int32>
集合中加入 Int32 以外的任何型別元素會導致編譯時期錯誤。 不過如果語言不支援泛型,System.Collections 命名空間就會包含抽象基底類別,可加以延伸以建立強式指派型別的集合類別。 這些基底類別如下:
集合的變化方式
集合會因元素的儲存、排序及比較方式,以及其執行搜尋的方式而有所不同。
SortedList 類別和 SortedList<TKey,TValue> 泛型類別提供排序版本的 Hashtable 類別與 Dictionary<TKey,TValue> 泛型類別。
所有集合都使用以零為起始的索引,Array 除外,它能允許不是以零起始的陣列。
您可以透過索引鍵或元素的索引來存取 SortedList 或 KeyedCollection<TKey,TItem> 的元素。 您只能透過元素的索引鍵來存取 Hashtable 或 Dictionary<TKey,TValue> 的元素。
搭配集合型別使用 LINQ
LINQ to Objects 功能提供一種常見模式,可用於存取任何實作 IEnumerable 或 IEnumerable<T> 型別的記憶體內部物件。 LINQ 查詢具有數個優於標準建構的優點,例如 foreach
迴圈:
- 簡潔明瞭,更容易瞭解。
- 可篩選、排序和分組資料。
- 可改善效能。
如需詳細資訊,請參閱 LINQ to Objects (C#)、LINQ to Objects (Visual Basic) 和 Parallel LINQ (PLINQ)。
相關主題
標題 | 描述 |
---|---|
集合和資料結構 | 討論 .NET 中可用的各種集合類型,包括堆疊、佇列、清單、陣列和字典。 |
Hashtable 和 Dictionary 集合類型 | 說明泛型和非泛型雜湊字典類型的功能。 |
排序集合類型 | 說明提供清單和集合之排序功能的類別。 |
泛型 | 說明泛型功能,包括 .NET 所提供的泛型集合、委派與介面。 提供 C#、Visual Basic 和 Visual C++ 功能說明文件的連結,以及支援技術 (例如反映) 的連結。 |
參考
System.Collections.ICollection
System.Collections.Generic.ICollection<T>
System.Collections.Generic.IList<T>