集合标准化了程序处理对象的方式。换句话说, 它包含一组类以通用方式包含元素。借助集合, 用户可以对对象执行多种操作, 如存储, 更新, 删除, 检索, 搜索, 排序等。
C#将collection划分为几个类, 一些常见的类如下所示:
文章图片
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 | 它代表将数据源拆分为多个分区的一种特殊方式。 |
推荐阅读
- win7系统蓝屏原因 浅析番茄花园windows7系统蓝屏的原因与排查办法
- 算法设计(如何用移位运算符将两个数相乘())
- 在R编程中计算向量之间的并行最小值和最大值– pmin()和pmax()函数
- Java和多重继承(Java支持多重继承吗(为什么不支持?))
- C++中的类型转换用法示例和解析
- C++ OpenCV如何保存图像(代码实现详细指南)
- 互斥与信号量(Mutex和Semaphore)有什么区别()
- 如何在Angular中使用jQuery(用法代码实例)
- C++基本语法和知识点总结合集