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
[<System.Serializable>]
type HashSet<'T> = class
interface ICollection<'T>
interface ISerializable
interface IDeserializationCallback
interface ISet<'T>
interface IReadOnlyCollection<'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 }
*/
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>IReadOnlyCollection<T>は、.NET Framework 4.6 以降のインターフェイスを実装します。以前のバージョンの.NET Frameworkでは、 クラスはこのインターフェイスをHashSet<T>実装していませんでした。
HashSet<T> オブジェクトの容量は、オブジェクトが保持できる要素数です。 HashSet<T> オブジェクトに要素が追加されると、このオブジェクトの容量は自動的に増加します。
HashSet<T> クラスは数学の集合モデルに基づいており、Dictionary<TKey,TValue> や Hashtable コレクションのキーにアクセスするのと同じような高パフォーマンスの set 操作を行えます。 簡単に言えば、 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>オブジェクトの場合は、実行時環境で構成要素の <gcAllowVeryLargeObjects>
属性を に設定enabled
することで、64 ビット システムで最大容量を 20 億要素にtrue
増やすことができます。
.NET Framework 4 以降では、 クラスは HashSet<T> インターフェイスをISet<T>実装します。
HashSet 操作と LINQ セット操作
LINQ では、 インターフェイスまたは インターフェイスを Distinct
実装するデータ ソースに対する 、 Union
、 Intersect
および Except
セット操作へのアクセスが IEnumerable 提供 IQueryable されます。 HashSet<T> は、セット操作のより大きく堅牢なコレクションを提供します。 たとえば、 HashSet<T> は や IsSupersetOfなどのIsSubsetOf比較を提供します。
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>) |
HashSet<T> クラスの新しいインスタンスを初期化します。このセット型には既定の等値比較子が使用されます。指定されたコレクションからコピーされた要素が格納され、コピー対象の要素数を格納できるだけの十分な容量が確保されます。 |
HashSet<T>(IEnumerable<T>, IEqualityComparer<T>) |
HashSet<T> クラスの新しいインスタンスを初期化します。このセット型には指定した等値比較子が使用されます。指定されたコレクションからコピーされた要素が格納され、コピー対象の要素数を格納できるだけの十分な容量が確保されます。 |
HashSet<T>(IEqualityComparer<T>) |
HashSet<T> クラスの新しいインスタンスを初期化します。初期化後のインスタンスの内容は空です。このセット型には指定した等値比較子が使用されます。 |
HashSet<T>(Int32) |
HashSet<T> クラスの新しいインスタンスを初期化します。初期化後のインスタンスの内容は空ですが、 |
HashSet<T>(Int32, IEqualityComparer<T>) |
HashSet<T> クラスの新しいインスタンスを初期化します。このセット型には指定した等値比較子が使用されます。また、 |
HashSet<T>(SerializationInfo, StreamingContext) |
互換性のために残されています。
シリアル化したデータを使用して、HashSet<T> クラスの新しいインスタンスを初期化します。 |
プロパティ
Comparer |
セット内の値が等しいかどうかを確認するために使用する IEqualityComparer<T> オブジェクトを取得します。 |
Count |
セットに格納されている要素の数を取得します。 |
メソッド
Add(T) |
指定された要素をセットに追加します。 |
Clear() |
HashSet<T> オブジェクトからすべての要素を削除します。 |
Contains(T) |
指定した要素が HashSet<T> オブジェクトに含まれているかどうかを判断します。 |
CopyTo(T[]) |
HashSet<T> オブジェクトの要素を配列にコピーします。 |
CopyTo(T[], Int32) |
指定された配列インデックスを開始位置として、HashSet<T> オブジェクトの要素を配列にコピーします。 |
CopyTo(T[], Int32, Int32) |
指定された配列インデックスを開始位置として、HashSet<T> オブジェクトから、指定された数の要素を配列にコピーします。 |
CreateSetComparer() |
HashSet<T> オブジェクトの等価テストに使用できる IEqualityComparer オブジェクトを返します。 |
EnsureCapacity(Int32) |
このハッシュ セットを大きくすることなく、指定された要素数を保持できるようにします。 |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
ExceptWith(IEnumerable<T>) |
現在の 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> オブジェクトの容量を、そこに格納されている実際の要素数を最も近い実装に固有の値に切り上げて設定します。 |
TryGetValue(T, T) |
指定された値をセットで検索し、見つかった場合は同じ値を返します。 |
UnionWith(IEnumerable<T>) |
現在の HashSet<T> オブジェクトに変更を加えて、そのオブジェクト自体、指定されたコレクション、またはそれら両方に存在するすべての要素を格納するようにします。 |
明示的なインターフェイスの実装
ICollection<T>.Add(T) |
ICollection<T> オブジェクトに項目を追加します。 |
ICollection<T>.IsReadOnly |
コレクションが読み取り専用かどうかを示す値を取得します。 |
IEnumerable.GetEnumerator() |
コレクションを反復処理する列挙子を返します。 |
IEnumerable<T>.GetEnumerator() |
コレクションを反復処理する列挙子を返します。 |
拡張メソッド
適用対象
こちらもご覧ください
フィードバック
フィードバックの送信と表示