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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。