本文提供了此 API 参考文档的补充说明。
该 HashSet<T> 类提供高性能集合运算。 集是一个集合,其中包含不重复的元素,并且其元素没有特定顺序。
对象的容量 HashSet<T> 是对象可以保存的元素数。 随着 HashSet<T> 元素添加到对象中,对象的容量会自动增加。
该HashSet<T>类基于数学集的模型,并提供类似于访问Dictionary<TKey,TValue>或Hashtable集合键的高性能集合操作。 简单而言, HashSet<T> 类可以视为 Dictionary<TKey,TValue> 没有值的集合。
HashSet<T>集合未排序,并且不能包含重复的元素。 如果顺序或元素重复比应用程序的性能更重要,请考虑将 List<T> 类与 Sort 该方法一起使用。
HashSet<T> 提供许多数学集运算,例如集加法(联合)和集减法。 下表列出了提供的 HashSet<T> 运算及其数学等效项。
HashSet 操作 | 数学等效项 |
---|---|
UnionWith | 并集或集合加法 |
IntersectWith | 路口 |
ExceptWith | 集合减法 |
SymmetricExceptWith | 对称差异 |
除了列出的集作之外, HashSet<T> 该类还提供用于确定集相等性、重叠集以及集是另一组的子集还是超集的方法。
仅限 .NET Framework:对于非常大HashSet<T>的对象,可以通过将配置元素的属性enabled
设置为<gcAllowVeryLargeObjects>
true
在运行时环境中,将 64 位系统上的最大容量增加到 20 亿个元素。
HashSet<T> 类实现 ISet<T> 接口。
HashSet 和 LINQ 集合运算
LINQ 提供对任何实现 Distinct
或 Union
接口的数据源的 Intersect
、Except
、IEnumerable 和 IQueryable 集合操作的访问。
HashSet<T> 提供更大和更强大的集合操作集。 例如, HashSet<T> 提供比较,例如 IsSubsetOf 和 IsSupersetOf。
LINQ 集作和 HashSet<T> 作之间的主要区别是 LINQ 集作始终返回新 IEnumerable<T> 集合,而 HashSet<T> 等效方法修改当前集合。
通常,如果必须创建新集,或者应用程序只需要访问提供的集作,则对任何集合或数组使用 LINQ 集作 IEnumerable<T> 将足够。 但是,如果应用程序需要访问额外的集合操作,或者不需要创建新集合,请使用HashSet<T> 类。
下表显示了 HashSet<T> 操作及其等价的 LINQ 集合操作。
HashSet 操作 | LINQ 等效项 |
---|---|
UnionWith | Union |
IntersectWith | Intersect |
ExceptWith | Except |
未提供。 | Distinct |
SymmetricExceptWith | 未提供。 |
Overlaps | 未提供。 |
IsSubsetOf | 未提供。 |
IsProperSubsetOf | 未提供。 |
IsSupersetOf | 未提供。 |
IsProperSupersetOf | 未提供。 |
SetEquals | 未提供。 |