HashSet<T> 是唯一元素的无序集合。它位于 System.Collections.Generic 命名空间下。它用于我们想要防止在集合中插入重复项的情况。就性能而言,与列表相比要好一些。
HashSet 类的特征:
- 哈希集<T> 类提供高性能的集合操作。集合是不包含重复元素的集合,并且其元素没有特定的顺序。
- HashSet的容量<T> object 是对象可以容纳的元素数量。
- 哈希集<T> 随着向对象添加元素,对象的容量会自动增加。
- 哈希集<T> 集合未排序且不能包含重复元素。
- 哈希集<T> 提供许多数学集合运算,例如集合加法(并集)和集合减法。
Constructors
构造函数 | 说明 |
---|---|
HashSet() | 初始化 HashSet 类的新实例,该实例为空,并使用集合类型的默认相等比较器。 |
HashSet(IEnumerable) | 初始化 HashSet 类的新实例,该实例使用集合类型的默认相等比较器,包含从指定集合复制的元素,并且具有足够的容量来容纳复制的元素数量。 |
HashSet(IEnumerable, IEqualityComparer) | 初始化 HashSet 类的新实例,该实例使用集合类型的指定相等比较器,包含从指定集合复制的元素,并且具有足够的容量来容纳复制的元素数量。 |
HashSet(IEqualityComparer) | 初始化 HashSet 类的一个新实例,该实例为空,并为集合类型使用指定的相等比较器。 |
哈希集(Int32) | 初始化 HashSet 类的新实例,该实例为空,但为容量项保留了空间,并使用集合类型的默认相等比较器。 |
HashSet(Int32, IEqualityComparer) | 初始化 HashSet 类的新实例,该实例使用集合类型的指定相等比较器,并具有足够的容量来容纳容量元素。 |
HashSet(SerializationInfo, StreamingContext) | 使用序列化数据初始化 HashSet 类的新实例。 |
例子:
// C# code to create a HashSet
using System;
using System.Collections.Generic;
class GFG {
// Driver code
public static void Main()
{
// Creating a HashSet of odd numbers
HashSet<int> odd = new HashSet<int>();
// Inserting elements in HashSet
for (int i = 0; i < 5; i++) {
odd.Add(2 * i + 1);
}
// Displaying the elements in the HashSet
foreach(int i in odd)
{
Console.WriteLine(i);
}
}
}
输出:
1 3 5 7 9
Properties
属性 | 说明 |
---|---|
Comparer | 获取 IEqualityComparer 对象,该对象用于确定集中值的相等性。 |
Count | 获取集合中包含的元素数。 |
例子:
// C# code to get the number of
// elements that are contained in HashSet
using System;
using System.Collections.Generic;
class GFG {
// Driver code
public static void Main()
{
// Creating a HashSet of integers
HashSet<int> mySet = new HashSet<int>();
// Inserting elements in HashSet
for (int i = 0; i < 5; i++) {
mySet.Add(i * 2);
}
// To get the number of
// elements that are contained in HashSet
Console.WriteLine(mySet.Count);
}
}
输出:
5
Methods
方法 | 说明 |
---|---|
Add(T) | 将指定元素添加到集合中。 |
Clear() | 从 HashSet 对象中删除所有元素。 |
Contains(T) | 确定HashSet对象是否包含指定元素。 |
CopyTo() | 将 HashSet 集合的元素复制到数组中。 |
CreateSetComparer() | 返回一个 IEqualityComparer 对象,该对象可用于 HashSet 对象的相等性测试。 |
Equals(Object) | 确定指定对象是否等于当前对象。 |
ExceptWith(IEnumerable) | 从当前 HashSet 对象中删除指定集合中的所有元素。 |
GetEnumerator() | 返回一个迭代 HashSet 对象的枚举器。 |
GetHashCode() | 用作默认的哈希函数。 |
GetObjectData(SerializationInfo, StreamingContext) | 实现 ISerialized 接口并返回序列化 HashSet 对象所需的数据。 |
GetType() | 获取当前实例的类型。 |
IntersectWith(IEnumerable) | 修改当前HashSet对象以仅包含该对象和指定集合中存在的元素。 |
IsProperSubsetOf(IEnumerable) | 确定HashSet对象是否是指定集合的真子集。 |
IsProperSupersetOf(IEnumerable) | 确定 HashSet 对象是否是指定集合的真超集。 |
IsSubsetOf(IEnumerable) | 确定 HashSet 对象是否是指定集合的子集。 |
IsSupersetOf(IEnumerable) | 确定 HashSet 对象是否是指定集合的超集。 |
MemberwiseClone() | 创建当前对象的浅拷贝。 |
OnDeserialization(Object) | 实现 ISerialized 接口并在反序列化完成时引发反序列化事件。 |
Overlaps(IEnumerable) | 确定当前HashSet对象和指定集合是否共享公共元素。 |
Remove(T) | 从 HashSet 对象中删除指定元素。 |
RemoveWhere(Predicate) | 从 HashSet 集合中删除与指定谓词定义的条件匹配的所有元素。 |
SetEquals(IEnumerable) | 确定HashSet对象和指定集合是否包含相同的元素。 |
SymmetricExceptWith(IEnumerable) | 修改当前HashSet对象以仅包含该对象或指定集合中存在的元素,但不能同时包含两者中存在的元素。 |
ToString() | 返回表示当前对象的字符串。 |
TrimExcess() | 将 HashSet 对象的容量设置为其包含的实际元素数,四舍五入为附近的特定于实现的值。 |
TryGetValue(T, T) | 在集合中搜索给定值并返回找到的相等值(如果有)。 |
UnionWith(IEnumerable) | 修改当前HashSet对象以包含其自身、指定集合或两者中存在的所有元素。 |
例子:
// C# code to Check if a HashSet is
// a subset of the specified collection
using System;
using System.Collections.Generic;
class GFG {
// Driver code
public static void Main()
{
// Creating a HashSet of integers
HashSet<int> mySet1 = new HashSet<int>();
// Inserting elements in HashSet
// mySet1 only contains even numbers less than
// equal to 10
for (int i = 1; i <= 5; i++)
mySet1.Add(2 * i);
// Creating a HashSet of integers
HashSet<int> mySet2 = new HashSet<int>();
// Inserting elements in HashSet
// mySet2 contains all numbers from 1 to 10
for (int i = 1; i <= 10; i++)
mySet2.Add(i);
// Check if a HashSet mySet1 is a subset
// of the HashSet mySet2
Console.WriteLine(mySet1.IsSubsetOf(mySet2));
}
}
输出:
True
例子:
// C# code to check if a HashSet
// contains the specified element
using System;
using System.Collections.Generic;
class GFG {
// Driver code
public static void Main()
{
// Creating a HashSet of strings
HashSet<string> mySet = new HashSet<string>();
// Inserting elements in HashSet
mySet.Add("DS");
mySet.Add("C++");
mySet.Add("Java");
mySet.Add("JavaScript");
// Check if a HashSet contains
// the specified element
if (mySet.Contains("Java"))
Console.WriteLine("Required Element is present");
else
Console.WriteLine("Required Element is not present");
}
}
输出:
Required Element is present
参考:
相关用法
- C# Hashtable用法及代码示例
- C# Hashtable和Dictionary的区别用法及代码示例
- C# HybridDictionary用法及代码示例
- C# String Clone()用法及代码示例
- C# String Compare()用法及代码示例
- C# String CompareOrdinal()用法及代码示例
- C# String CompareTo()用法及代码示例
- C# String Concat()用法及代码示例
- C# String Contains()用法及代码示例
- C# String Copy()用法及代码示例
- C# String CopyTo()用法及代码示例
- C# String EndsWith()用法及代码示例
- C# String Equals()用法及代码示例
- C# String Format()用法及代码示例
- C# String GetEnumerator()用法及代码示例
- C# String IndexOf()用法及代码示例
- C# String Insert()用法及代码示例
- C# String IsInterned()用法及代码示例
- C# String IsNormalized()用法及代码示例
- C# String IsNullOrEmpty()用法及代码示例
- C# String IsNullOrWhiteSpace()用法及代码示例
- C# String Join()用法及代码示例
- C# String LastIndexOf()用法及代码示例
- C# String LastIndexOfAny()用法及代码示例
- C# String Normalize()用法及代码示例
注:本文由纯净天空筛选整理自Sahil_Bansall大神的英文原创作品 C# | HashSet Class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。