HashSet<T> クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
値のセットを表します。
generic <typename T>
public ref class HashSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::IReadOnlyCollection<T>, System::Collections::Generic::ISet<T>
generic <typename T>
public ref class HashSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::IReadOnlyCollection<T>, System::Collections::Generic::IReadOnlySet<T>, System::Collections::Generic::ISet<T>, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
generic <typename T>
public ref class HashSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::IReadOnlyCollection<T>, System::Collections::Generic::ISet<T>, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
generic <typename T>
public ref class HashSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
generic <typename T>
public ref class HashSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::ISet<T>, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
generic <typename T>
public ref class HashSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::ISet<T>
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.Generic.ISet<T>
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.Generic.IReadOnlySet<T>, System.Collections.Generic.ISet<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.Generic.ISet<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Serializable]
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Serializable]
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.ISet<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Serializable]
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.Generic.ISet<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.ISet<T>
type HashSet<'T> = class
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
interface IReadOnlyCollection<'T>
interface ISet<'T>
type HashSet<'T> = class
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
interface IReadOnlyCollection<'T>
interface ISet<'T>
interface IReadOnlySet<'T>
interface IDeserializationCallback
interface ISerializable
type HashSet<'T> = class
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
interface IReadOnlyCollection<'T>
interface ISet<'T>
interface IDeserializationCallback
interface ISerializable
[<System.Serializable>]
type HashSet<'T> = class
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
interface ISerializable
interface IDeserializationCallback
[<System.Serializable>]
type HashSet<'T> = class
interface ISerializable
interface IDeserializationCallback
interface ISet<'T>
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
[<System.Serializable>]
type HashSet<'T> = class
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
interface ISerializable
interface IDeserializationCallback
interface ISet<'T>
interface IReadOnlyCollection<'T>
type HashSet<'T> = class
interface ISet<'T>
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
Public Class HashSet(Of T)
Implements ICollection(Of T), IEnumerable(Of T), IReadOnlyCollection(Of T), ISet(Of T)
Public Class HashSet(Of T)
Implements ICollection(Of T), IDeserializationCallback, IEnumerable(Of T), IReadOnlyCollection(Of T), IReadOnlySet(Of T), ISerializable, ISet(Of T)
Public Class HashSet(Of T)
Implements ICollection(Of T), IDeserializationCallback, IEnumerable(Of T), IReadOnlyCollection(Of T), ISerializable, ISet(Of T)
Public Class HashSet(Of T)
Implements ICollection(Of T), IDeserializationCallback, IEnumerable(Of T), ISerializable
Public Class HashSet(Of T)
Implements ICollection(Of T), IDeserializationCallback, IEnumerable(Of T), ISerializable, ISet(Of T)
Public Class HashSet(Of T)
Implements ICollection(Of T), IEnumerable(Of T), ISet(Of T)
型パラメーター
- T
ハッシュ セット内の要素の型。
- 継承
-
HashSet<T>
- 属性
- 実装
例
次の例では、2 つの異なるセットをマージする方法を示します。 この例では、2 つの HashSet<T> オブジェクトを作成し、それぞれ偶数と奇数を設定します。 偶数を含むセットから 3 番目の HashSet<T> オブジェクトが作成されます。 次に、 UnionWith メソッドを呼び出します。これにより、奇数セットが 3 番目のセットに追加されます。
HashSet<int> evenNumbers = new HashSet<int>();
HashSet<int> oddNumbers = new HashSet<int>();
for (int i = 0; i < 5; i++)
{
// Populate numbers with just even numbers.
evenNumbers.Add(i * 2);
// Populate oddNumbers with just odd numbers.
oddNumbers.Add((i * 2) + 1);
}
Console.Write("evenNumbers contains {0} elements: ", evenNumbers.Count);
DisplaySet(evenNumbers);
Console.Write("oddNumbers contains {0} elements: ", oddNumbers.Count);
DisplaySet(oddNumbers);
// Create a new HashSet populated with even numbers.
HashSet<int> numbers = new HashSet<int>(evenNumbers);
Console.WriteLine("numbers UnionWith oddNumbers...");
numbers.UnionWith(oddNumbers);
Console.Write("numbers contains {0} elements: ", numbers.Count);
DisplaySet(numbers);
void DisplaySet(HashSet<int> collection)
{
Console.Write("{");
foreach (int i in collection)
{
Console.Write(" {0}", i);
}
Console.WriteLine(" }");
}
/* This example produces output similar to the following:
* evenNumbers contains 5 elements: { 0 2 4 6 8 }
* oddNumbers contains 5 elements: { 1 3 5 7 9 }
* numbers UnionWith oddNumbers...
* numbers contains 10 elements: { 0 2 4 6 8 1 3 5 7 9 }
*/
let displaySet (collection: HashSet<int>) =
printf "{"
for i in collection do
printf $" {i}"
printfn " }"
let evenNumbers = HashSet<int>()
let oddNumbers = HashSet<int>()
for i = 0 to 4 do
// Populate numbers with just even numbers.
evenNumbers.Add(i * 2) |> ignore
// Populate oddNumbers with just odd numbers.
oddNumbers.Add(i * 2 + 1) |> ignore
printf $"evenNumbers contains {evenNumbers.Count} elements: "
displaySet evenNumbers
printf $"oddNumbers contains {oddNumbers.Count} elements: "
displaySet oddNumbers
// Create a new HashSet populated with even numbers.
let numbers = HashSet<int> evenNumbers
printfn "numbers UnionWith oddNumbers..."
numbers.UnionWith oddNumbers
printf $"numbers contains {numbers.Count} elements: "
displaySet numbers
// This example produces output similar to the following:
// evenNumbers contains 5 elements: { 0 2 4 6 8 }
// oddNumbers contains 5 elements: { 1 3 5 7 9 }
// numbers UnionWith oddNumbers...
// numbers contains 10 elements: { 0 2 4 6 8 1 3 5 7 9 }
Imports System.Collections.Generic
Class Program
Shared Sub Main()
Dim evenNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()
Dim oddNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()
For i As Integer = 0 To 4
' Populate evenNumbers with only even numbers.
evenNumbers.Add(i * 2)
' Populate oddNumbers with only odd numbers.
oddNumbers.Add((i * 2) + 1)
Next i
Console.Write("evenNumbers contains {0} elements: ", evenNumbers.Count)
DisplaySet(evenNumbers)
Console.Write("oddNumbers contains {0} elements: ", oddNumbers.Count)
DisplaySet(oddNumbers)
' Create a new HashSet populated with even numbers.
Dim numbers As HashSet(Of Integer) = New HashSet(Of Integer)(evenNumbers)
Console.WriteLine("numbers UnionWith oddNumbers...")
numbers.UnionWith(oddNumbers)
Console.Write("numbers contains {0} elements: ", numbers.Count)
DisplaySet(numbers)
End Sub
Private Shared Sub DisplaySet(ByVal collection As HashSet(Of Integer))
Console.Write("{")
For Each i As Integer In collection
Console.Write(" {0}", i)
Next i
Console.WriteLine(" }")
End Sub
End Class
' This example produces output similar to the following:
' evenNumbers contains 5 elements: { 0 2 4 6 8 }
' oddNumbers contains 5 elements: { 1 3 5 7 9 }
' numbers UnionWith oddNumbers...
' numbers contains 10 elements: { 0 2 4 6 8 1 3 5 7 9 }
注釈
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> クラスには、セットの等価性、セットの重複、およびセットが別のセットのサブセットかスーパーセットかを判断するためのメソッドも用意されています。
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> 同等のメソッドは現在のコレクションを変更することです。
通常、新しいセットを作成する必要がある場合、またはアプリケーションが指定されたセット操作にのみアクセスする必要がある場合は、 IEnumerable<T> コレクションまたは配列に対して LINQ セット操作を使用するだけで十分です。 ただし、アプリケーションが追加のセット操作にアクセスする必要がある場合、または新しいコレクションを作成するのが望ましくない場合や必要な場合は、 HashSet<T> クラスを使用します。
次の表は、 HashSet<T> 操作とその同等の LINQ セット操作を示しています。
| HashSet 操作 | LINQ に相当する |
|---|---|
| UnionWith | Union |
| IntersectWith | Intersect |
| ExceptWith | Except |
| 指定されていません。 | Distinct |
| SymmetricExceptWith | 指定されていません。 |
| Overlaps | 指定されていません。 |
| IsSubsetOf | 指定されていません。 |
| IsProperSubsetOf | 指定されていません。 |
| IsSupersetOf | 指定されていません。 |
| IsProperSupersetOf | 指定されていません。 |
| SetEquals | 指定されていません。 |
コンストラクター
| 名前 | 説明 |
|---|---|
| HashSet<T>() |
空の HashSet<T> クラスの新しいインスタンスを初期化し、セット型の既定の等値比較子を使用します。 |
| HashSet<T>(IEnumerable<T>, IEqualityComparer<T>) |
セット型に対して指定した等値比較子を使用し、指定したコレクションからコピーされた要素を含み、コピーされた要素の数に対応できる十分な容量を持つ、 HashSet<T> クラスの新しいインスタンスを初期化します。 |
| HashSet<T>(IEnumerable<T>) |
セット型の既定の等値比較子を使用し、指定したコレクションからコピーされた要素を含み、コピーされた要素の数に対応できる十分な容量を持つ、 HashSet<T> クラスの新しいインスタンスを初期化します。 |
| HashSet<T>(IEqualityComparer<T>) |
空の HashSet<T> クラスの新しいインスタンスを初期化し、セット型に対して指定された等値比較子を使用します。 |
| HashSet<T>(Int32, IEqualityComparer<T>) |
セット型に対して指定された等値比較子を使用し、HashSet<T>要素に対応するのに十分な容量を持つ、 |
| HashSet<T>(Int32) |
空の HashSet<T> クラスの新しいインスタンスを初期化しますが、 |
| HashSet<T>(SerializationInfo, StreamingContext) |
古い.
シリアル化されたデータを使用して、 HashSet<T> クラスの新しいインスタンスを初期化します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| Capacity |
内部データ構造がサイズを変更せずに保持できる要素の合計数を取得します。 |
| Comparer |
セット内の値の等価性を判断するために使用される IEqualityComparer<T> オブジェクトを取得します。 |
| Count |
セットに含まれる要素の数を取得します。 |
メソッド
| 名前 | 説明 |
|---|---|
| Add(T) |
指定した要素をセットに追加します。 |
| Clear() |
HashSet<T> オブジェクトからすべての要素を削除します。 |
| Contains(T) |
HashSet<T> オブジェクトに指定した要素が含まれているかどうかを判断します。 |
| CopyTo(T[], Int32, Int32) |
指定した配列インデックスから始まる、 HashSet<T> オブジェクトの指定した数の要素を配列にコピーします。 |
| CopyTo(T[], Int32) |
指定した配列インデックスから始まる、 HashSet<T> オブジェクトの要素を配列にコピーします。 |
| CopyTo(T[]) |
HashSet<T> オブジェクトの要素を配列にコピーします。 |
| CreateSetComparer() |
IEqualityComparer オブジェクトの等値テストに使用できるHashSet<T> オブジェクトを返します。 |
| EnsureCapacity(Int32) |
このハッシュ セットが、バッキング ストレージをさらに拡張することなく、指定した数の要素を保持できることを確認します。 |
| Equals(Object) |
指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
| ExceptWith(IEnumerable<T>) |
現在の HashSet<T> オブジェクトから、指定したコレクション内のすべての要素を削除します。 |
| GetAlternateLookup<TAlternate>() |
HashSet<T>ではなく、 |
| GetEnumerator() |
HashSet<T> オブジェクトを反復処理する列挙子を返します。 |
| GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
古い.
ISerializable インターフェイスを実装し、HashSet<T> オブジェクトのシリアル化に必要なデータを返します。 |
| GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
| IntersectWith(IEnumerable<T>) |
現在の HashSet<T> オブジェクトを、そのオブジェクトおよび指定したコレクションに存在する要素のみを含むように変更します。 |
| IsProperSubsetOf(IEnumerable<T>) |
HashSet<T> オブジェクトが指定したコレクションの適切なサブセットであるかどうかを判断します。 |
| IsProperSupersetOf(IEnumerable<T>) |
HashSet<T> オブジェクトが、指定したコレクションの適切なスーパーセットであるかどうかを判断します。 |
| IsSubsetOf(IEnumerable<T>) |
HashSet<T> オブジェクトが指定したコレクションのサブセットであるかどうかを判断します。 |
| IsSupersetOf(IEnumerable<T>) |
HashSet<T> オブジェクトが、指定したコレクションのスーパーセットであるかどうかを判断します。 |
| MemberwiseClone() |
現在の Objectの簡易コピーを作成します。 (継承元 Object) |
| OnDeserialization(Object) |
ISerializable インターフェイスを実装し、逆シリアル化が完了したときに逆シリアル化イベントを発生させます。 |
| Overlaps(IEnumerable<T>) |
現在の HashSet<T> オブジェクトと指定したコレクションが共通の要素を共有するかどうかを決定します。 |
| Remove(T) |
指定した要素を HashSet<T> オブジェクトから削除します。 |
| RemoveWhere(Predicate<T>) |
指定した述語によって定義された条件に一致するすべての要素を HashSet<T> コレクションから削除します。 |
| SetEquals(IEnumerable<T>) |
HashSet<T> オブジェクトと指定したコレクションに同じ要素が含まれているかどうかを判断します。 |
| SymmetricExceptWith(IEnumerable<T>) |
現在の HashSet<T> オブジェクトを、そのオブジェクトまたは指定したコレクション内に存在する要素のみを含むように変更しますが、両方は含まれません。 |
| ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
| TrimExcess() |
HashSet<T> オブジェクトの容量を含む要素の実際の数に設定し、近くの実装固有の値に切り上げます。 |
| TrimExcess(Int32) |
HashSet<T> オブジェクトの容量を指定したエントリ数に設定し、近くの実装固有の値に切り上げます。 |
| TryGetAlternateLookup<TAlternate>(HashSet<T>.AlternateLookup<TAlternate>) |
HashSet<T>ではなく、 |
| TryGetValue(T, T) |
セットで特定の値を検索し、検出された等しい値 (存在する場合) を返します。 |
| UnionWith(IEnumerable<T>) |
現在の HashSet<T> オブジェクトを、それ自体、指定したコレクション、またはその両方に存在するすべての要素を含むように変更します。 |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| ICollection<T>.Add(T) |
ICollection<T> オブジェクトに項目を追加します。 |
| ICollection<T>.IsReadOnly |
コレクションが読み取り専用かどうかを示す値を取得します。 |
| IEnumerable.GetEnumerator() |
コレクションを反復処理する列挙子を返します。 |
| IEnumerable<T>.GetEnumerator() |
コレクションを反復処理する列挙子を返します。 |