C#如何使用集合(集合的操作用法实例解读)

集合标准化了程序处理对象的方式。换句话说, 它包含一组类以通用方式包含元素。借助集合, 用户可以对对象执行多种操作, 如存储, 更新, 删除, 检索, 搜索, 排序等。
C#将collection划分为几个类, 一些常见的类如下所示:

C#如何使用集合(集合的操作用法实例解读)

文章图片
System.Collections.Generic类 C#中的通用集合在System.Collection.Generic命名空间。它提供了标准数据结构的通用实现, 例如链表, 栈, 队列和字典。这些集合是类型安全的, 因为它们是通用的, 意味着只有那些与集合类型兼容的项目才能存储在通用集合中, 这样可以消除意外的类型不匹配。通用集合由一组接口和类定义。下表包含了System.Collections.Generic命名空间:
类名称 描述
Dictionary< TKey, TValue> 它存储键/值对, 并提供类似于非通用Hashtable类中的功能。
List< T> 它是一个动态数组, 其功能类似于非通用ArrayList类中的功能。
Queue< T> 先进先出列表, 其功能类似于非通用Queue类中的功能。
SortedList< TKey, TValue> 它是键/值对的排序列表, 并且提供的功能类似于非通用SortedList类中的功能。
Stack< T> 它是一个先进先出的列表, 并提供与非通用Stack类相似的功能。
HashSet< T> 它是唯一元素的无序集合。这样可以防止将重复项插入到集合中。
LinkedList< T> 它允许快速插入和删除元素。它实现了经典的链表。
例子:
// C# program to illustrate the concept // of generic collection using List< T> using System; using System.Collections.Generic; class Geeks {// Main Method public static void Main(String[] args) {// Creating a List of integers List< int > mylist = new List< int > (); // adding items in mylist for ( int j = 5; j < 10; j++) { mylist.Add(j * 3); }// Displaying items of mylist // by using foreach loop foreach ( int items in mylist) { Console.WriteLine(items); } } }

【C#如何使用集合(集合的操作用法实例解读)】输出如下:
15 18 21 24 27

System.Collections类 C#中的非泛型集合在系统集合命名空间。它是可用于对象引用的通用数据结构, 因此它可以处理任何类型的对象, 但不能以安全类型的方式处理。非通用集合由一组接口和类定义。下表包含了系统集合命名空间:
类名称 描述
ArrayList 它是动态数组, 表示数组的大小不固定, 可以在运行时增加和减少。
Hashtable 它表示根据键的哈希码组织的键和值对的集合。
Queue 它表示对象的先进先出集合。当你需要项目的先进先出访问时使用。
Stack 它是线性数据结构。它遵循LIFO(后进先出)模式进行输入/输出。
例子:
// C# to illustrate the concept // of non-generic collection using Queue using System; using System.Collections; class GFG {// Driver code public static void Main() {// Creating a Queue Queue myQueue = new Queue(); // Inserting the elements into the Queue myQueue.Enqueue( "C#" ); myQueue.Enqueue( "PHP" ); myQueue.Enqueue( "Perl" ); myQueue.Enqueue( "Java" ); myQueue.Enqueue( "C" ); // Displaying the count of elements // contained in the Queue Console.Write( "Total number of elements present in the Queue are: " ); Console.WriteLine(myQueue.Count); // Displaying the beginning element of Queue Console.WriteLine( "Beginning Item is: " + myQueue.Peek()); } }

输出如下:
Total number of elements present in the Queue are: 5 Beginning Item is: C#

注意:C#还提供了一些专门的集合, 这些集合经过优化可以处理特定类型的数据类型, 并且该专门集合位于System.Collections.Specialized命名空间。
System.Collections.Concurrent 它进来了.NET Framework版本4及以后。它提供了各种线程安全的收集类, 这些类可用于替换系统集合和System.Collections.Generic多个线程同时访问集合时的名称空间。此集合中提供的类是:
类名称 描述
BlockingCollection 它为实现的线程安全集合提供了阻止和限制功能。
IProducerConsumerCollection。
ConcurrentBag 它表示线程安全的对象的无序集合。
ConcurrentDictionary 它表示键/值对的线程安全集合, 多个线程可以同时访问这些键/值对。
ConcurrentQueue 它表示线程安全的先进先出(FIFO)集合。
ConcurrentStack 它表示线程安全的后进先出(LIFO)集合。
OrderablePartitioner 它代表将可排序数据源拆分为多个分区的一种特殊方式。
Partitioner 它为数组, 列表和枚举数提供了常见的分区策略。
Partitioner 它代表将数据源拆分为多个分区的一种特殊方式。

    推荐阅读