Hashtable コンストラクター
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Hashtable クラスの新しいインスタンスを初期化します。
オーバーロード
| 名前 | 説明 |
|---|---|
| Hashtable() |
既定の初期容量、読み込み係数、ハッシュ コード プロバイダー、および比較子を使用して、 Hashtable クラスの新しい空のインスタンスを初期化します。 |
| Hashtable(Int32, Single, IHashCodeProvider, IComparer) |
古い.
古い.
指定した初期容量、読み込み係数、ハッシュ コード プロバイダー、および比較子を使用して、 Hashtable クラスの新しい空のインスタンスを初期化します。 |
| Hashtable(IDictionary, Single, IHashCodeProvider, IComparer) |
古い.
古い.
指定したディクショナリの要素を新しいHashtable オブジェクトにコピーして、Hashtable クラスの新しいインスタンスを初期化します。 新しい Hashtable オブジェクトは、コピーされた要素の数と同じ初期容量を持ち、指定された読み込み係数、ハッシュ コード プロバイダー、および比較子を使用します。 |
| Hashtable(Int32, Single, IEqualityComparer) |
指定した初期容量、読み込み係数、およびHashtable オブジェクトを使用して、IEqualityComparer クラスの新しい空のインスタンスを初期化します。 |
| Hashtable(Int32, IHashCodeProvider, IComparer) |
古い.
古い.
指定した初期容量、ハッシュ コード プロバイダー、比較子、および既定の読み込み係数を使用して、 Hashtable クラスの新しい空のインスタンスを初期化します。 |
| Hashtable(IDictionary, Single, IEqualityComparer) |
指定したディクショナリの要素を新しいHashtable オブジェクトにコピーして、Hashtable クラスの新しいインスタンスを初期化します。 新しい Hashtable オブジェクトは、コピーされた要素の数と同じ初期容量を持ち、指定された荷重係数と IEqualityComparer オブジェクトを使用します。 |
| Hashtable(IDictionary, IHashCodeProvider, IComparer) |
古い.
古い.
指定したディクショナリの要素を新しいHashtable オブジェクトにコピーして、Hashtable クラスの新しいインスタンスを初期化します。 新しい Hashtable オブジェクトは、コピーされた要素の数と同じ初期容量を持ち、既定の読み込み係数と、指定されたハッシュ コード プロバイダーと比較子を使用します。 この API は廃止されています。 別の方法については、 Hashtable(IDictionary, IEqualityComparer)を参照してください。 |
| Hashtable(Int32, Single) |
指定した初期容量と読み込み係数、および既定のハッシュ コード プロバイダーと比較子を使用して、 Hashtable クラスの新しい空のインスタンスを初期化します。 |
| Hashtable(SerializationInfo, StreamingContext) |
古い.
指定したHashtableおよびSerializationInfo オブジェクトを使用してシリアル化可能なStreamingContext クラスの新しい空のインスタンスを初期化します。 |
| Hashtable(IHashCodeProvider, IComparer) |
古い.
古い.
古い.
既定の初期容量と読み込み係数、および指定したハッシュ コード プロバイダーと比較子を使用して、 Hashtable クラスの新しい空のインスタンスを初期化します。 |
| Hashtable(IDictionary, Single) |
指定したディクショナリの要素を新しいHashtable オブジェクトにコピーして、Hashtable クラスの新しいインスタンスを初期化します。 新しい Hashtable オブジェクトには、コピーされた要素の数と同じ初期容量があり、指定された読み込み係数と、既定のハッシュ コード プロバイダーと比較子が使用されます。 |
| Hashtable(IDictionary, IEqualityComparer) |
指定したディクショナリから新しいHashtable オブジェクトに要素をコピーして、Hashtable クラスの新しいインスタンスを初期化します。 新しい Hashtable オブジェクトは、コピーされた要素の数と同じ初期容量を持ち、既定の読み込み係数と指定した IEqualityComparer オブジェクトを使用します。 |
| Hashtable(Int32) |
指定した初期容量と、既定の読み込み係数、ハッシュ コード プロバイダー、および比較子を使用して、 Hashtable クラスの新しい空のインスタンスを初期化します。 |
| Hashtable(IEqualityComparer) |
既定の初期容量と読み込み係数、および指定したHashtable オブジェクトを使用して、IEqualityComparer クラスの新しい空のインスタンスを初期化します。 |
| Hashtable(IDictionary) |
指定したディクショナリの要素を新しいHashtable オブジェクトにコピーして、Hashtable クラスの新しいインスタンスを初期化します。 新しい Hashtable オブジェクトには、コピーされた要素の数と同じ初期容量があり、既定の読み込み係数、ハッシュ コード プロバイダー、および比較子が使用されます。 |
| Hashtable(Int32, IEqualityComparer) |
指定した初期容量とHashtable、および既定の読み込み係数を使用して、IEqualityComparer クラスの新しい空のインスタンスを初期化します。 |
Hashtable()
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
既定の初期容量、読み込み係数、ハッシュ コード プロバイダー、および比較子を使用して、 Hashtable クラスの新しい空のインスタンスを初期化します。
public:
Hashtable();
public Hashtable();
Public Sub New ()
例
次のコード例では、異なる Hashtable コンストラクターを使用してハッシュ テーブルを作成し、それぞれが同じ要素を含む場合でも、ハッシュ テーブルの動作の違いを示します。
using System;
using System.Collections;
using System.Globalization;
class myComparer : IEqualityComparer
{
public new bool Equals(object x, object y)
{
return x.Equals(y);
}
public int GetHashCode(object obj)
{
return obj.ToString().ToLower().GetHashCode();
}
}
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
return myComparer.Compare(x, y) == 0;
}
public int GetHashCode(object obj)
{
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create a hash table using the default comparer.
var myHT1 = new Hashtable();
myHT1.Add("FIRST", "Hello");
myHT1.Add("SECOND", "World");
myHT1.Add("THIRD", "!");
// Create a hash table using the specified IEqualityComparer that uses
// the default Object.Equals to determine equality.
var myHT2 = new Hashtable(new myComparer());
myHT2.Add("FIRST", "Hello");
myHT2.Add("SECOND", "World");
myHT2.Add("THIRD", "!");
// Create a hash table using a case-insensitive hash code provider and
// case-insensitive comparer based on the InvariantCulture.
Hashtable myHT3 = new Hashtable(
CaseInsensitiveHashCodeProvider.DefaultInvariant,
CaseInsensitiveComparer.DefaultInvariant);
myHT3.Add("FIRST", "Hello");
myHT3.Add("SECOND", "World");
myHT3.Add("THIRD", "!");
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
var myCul = new CultureInfo("tr-TR");
var myHT4 = new Hashtable(new myCultureComparer(myCul));
myHT4.Add("FIRST", "Hello");
myHT4.Add("SECOND", "World");
myHT4.Add("THIRD", "!");
// Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}");
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}");
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}");
Console.WriteLine($"first is in myHT4: {myHT4.ContainsKey("first")}");
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: False
first is in myHT3: True
first is in myHT4: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myComparer
Implements IEqualityComparer
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
Return x.Equals(y)
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
Return myComparer.Compare(x, y) = 0
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable()
myHT1.Add("FIRST", "Hello")
myHT1.Add("SECOND", "World")
myHT1.Add("THIRD", "!")
' Create a hash table using the specified IEqualityComparer that uses
' the default Object.Equals to determine equality.
Dim myHT2 As New Hashtable(New myComparer())
myHT2.Add("FIRST", "Hello")
myHT2.Add("SECOND", "World")
myHT2.Add("THIRD", "!")
' Create a hash table using a case-insensitive hash code provider and
' case-insensitive comparer based on the InvariantCulture.
Dim myHT3 As New Hashtable( _
CaseInsensitiveHashCodeProvider.DefaultInvariant, _
CaseInsensitiveComparer.DefaultInvariant)
myHT3.Add("FIRST", "Hello")
myHT3.Add("SECOND", "World")
myHT3.Add("THIRD", "!")
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT4 As New Hashtable(New myCultureComparer(myCul))
myHT4.Add("FIRST", "Hello")
myHT4.Add("SECOND", "World")
myHT4.Add("THIRD", "!")
' Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}")
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}")
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}")
Console.WriteLine($"first is in myHT4: {myHT4.ContainsKey("first")}")
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'first is in myHT1: False
'first is in myHT2: False
'first is in myHT3: True
'first is in myHT4: False
注釈
ハッシュ テーブルの容量は、読み込み係数に基づいてハッシュ テーブル バケットの最適な数を計算するために使用されます。 容量は、必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
ハッシュ コード プロバイダーは、 Hashtable オブジェクト内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
このコンストラクターは、 O(1) 操作です。
こちらもご覧ください
適用対象
Hashtable(Int32, Single, IHashCodeProvider, IComparer)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
注意事項
This constructor has been deprecated. Use Hashtable(int, float, IEqualityComparer) instead.
注意事項
Please use Hashtable(int, float, IEqualityComparer) instead.
指定した初期容量、読み込み係数、ハッシュ コード プロバイダー、および比較子を使用して、 Hashtable クラスの新しい空のインスタンスを初期化します。
public:
Hashtable(int capacity, float loadFactor, System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
[System.Obsolete("This constructor has been deprecated. Use Hashtable(int, float, IEqualityComparer) instead.")]
public Hashtable(int capacity, float loadFactor, System.Collections.IHashCodeProvider? hcp, System.Collections.IComparer? comparer);
[System.Obsolete("Please use Hashtable(int, float, IEqualityComparer) instead.")]
public Hashtable(int capacity, float loadFactor, System.Collections.IHashCodeProvider? hcp, System.Collections.IComparer? comparer);
[System.Obsolete("Please use Hashtable(int, float, IEqualityComparer) instead.")]
public Hashtable(int capacity, float loadFactor, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
public Hashtable(int capacity, float loadFactor, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
[<System.Obsolete("This constructor has been deprecated. Use Hashtable(int, float, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : int * single * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(int, float, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : int * single * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
new System.Collections.Hashtable : int * single * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (capacity As Integer, loadFactor As Single, hcp As IHashCodeProvider, comparer As IComparer)
パラメーター
- loadFactor
- Single
0.1 ~ 1.0 の範囲の数値に、最適なパフォーマンスを提供する既定値を乗算します。 結果は、バケットに対する要素の最大比率です。
IHashCodeProvider内のすべてのキーのハッシュ コードを提供するHashtable オブジェクト。
-又は-
null は、各キーの GetHashCode()の実装である既定のハッシュ コード プロバイダーを使用します。
- comparer
- IComparer
2 つのキーが等しいかどうかを判断するために使用する IComparer オブジェクト。
-又は-
null は、各キーの Equals(Object)の実装である既定の比較子を使用します。
- 属性
例外
capacity が 0 未満です。
-又は-
loadFactor が 0.1 未満です。
-又は-
loadFactor が 1.0 より大きい。
注釈
初期容量を指定すると、 Hashtable オブジェクトに要素を追加するときに、多数のサイズ変更操作を実行する必要がなくなります。 容量は、負荷係数に基づいて必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。 負荷係数 1.0 は、速度とサイズの最適なバランスです。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
ハッシュ コード プロバイダーは、 Hashtable内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
カスタム ハッシュ コード プロバイダーとカスタム比較子を使用すると、大文字と小文字を区別しない文字列で検索を実行するなどのシナリオが可能になります。
このコンストラクターは O(n) 操作です。ここで、 n は capacity パラメーターです。
こちらもご覧ください
適用対象
Hashtable(IDictionary, Single, IHashCodeProvider, IComparer)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
注意事項
This constructor has been deprecated. Use Hashtable(IDictionary, float, IEqualityComparer) instead.
注意事項
Please use Hashtable(IDictionary, float, IEqualityComparer) instead.
public:
Hashtable(System::Collections::IDictionary ^ d, float loadFactor, System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
[System.Obsolete("This constructor has been deprecated. Use Hashtable(IDictionary, float, IEqualityComparer) instead.")]
public Hashtable(System.Collections.IDictionary d, float loadFactor, System.Collections.IHashCodeProvider? hcp, System.Collections.IComparer? comparer);
[System.Obsolete("Please use Hashtable(IDictionary, float, IEqualityComparer) instead.")]
public Hashtable(System.Collections.IDictionary d, float loadFactor, System.Collections.IHashCodeProvider? hcp, System.Collections.IComparer? comparer);
[System.Obsolete("Please use Hashtable(IDictionary, float, IEqualityComparer) instead.")]
public Hashtable(System.Collections.IDictionary d, float loadFactor, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
public Hashtable(System.Collections.IDictionary d, float loadFactor, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
[<System.Obsolete("This constructor has been deprecated. Use Hashtable(IDictionary, float, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : System.Collections.IDictionary * single * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(IDictionary, float, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : System.Collections.IDictionary * single * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
new System.Collections.Hashtable : System.Collections.IDictionary * single * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (d As IDictionary, loadFactor As Single, hcp As IHashCodeProvider, comparer As IComparer)
パラメーター
新しいIDictionary オブジェクトにコピーするHashtable オブジェクト。
- loadFactor
- Single
0.1 ~ 1.0 の範囲の数値に、最適なパフォーマンスを提供する既定値を乗算します。 結果は、バケットに対する要素の最大比率です。
IHashCodeProvider内のすべてのキーのハッシュ コードを提供するHashtable オブジェクト。
-又は-
null は、各キーの GetHashCode()の実装である既定のハッシュ コード プロバイダーを使用します。
- comparer
- IComparer
2 つのキーが等しいかどうかを判断するために使用する IComparer オブジェクト。
-又は-
null は、各キーの Equals(Object)の実装である既定の比較子を使用します。
- 属性
例外
d は nullです。
注釈
初期容量は、ソース ディクショナリ内の要素の数に設定されます。 容量は、負荷係数に基づいて必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。 負荷係数 1.0 は、速度とサイズの最適なバランスです。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
ハッシュ コード プロバイダーは、 Hashtable オブジェクト内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
カスタム ハッシュ コード プロバイダーとカスタム比較子を使用すると、大文字と小文字を区別しない文字列で検索を実行するなどのシナリオが可能になります。
新しい Hashtable の要素は、列挙子が IDictionary オブジェクトを反復処理するのと同じ順序で並べ替えられます。
このコンストラクターは O(n) 操作です。ここで、 n は d パラメーター内の要素の数です。
適用対象
Hashtable(Int32, Single, IEqualityComparer)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
指定した初期容量、読み込み係数、およびHashtable オブジェクトを使用して、IEqualityComparer クラスの新しい空のインスタンスを初期化します。
public:
Hashtable(int capacity, float loadFactor, System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(int capacity, float loadFactor, System.Collections.IEqualityComparer equalityComparer);
public Hashtable(int capacity, float loadFactor, System.Collections.IEqualityComparer? equalityComparer);
new System.Collections.Hashtable : int * single * System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (capacity As Integer, loadFactor As Single, equalityComparer As IEqualityComparer)
パラメーター
- loadFactor
- Single
0.1 ~ 1.0 の範囲の数値に、最適なパフォーマンスを提供する既定値を乗算します。 結果は、バケットに対する要素の最大比率です。
- equalityComparer
- IEqualityComparer
IEqualityComparerで使用するハッシュ コード プロバイダーと比較子を定義するHashtable オブジェクト。
-又は-
null を使用して、既定のハッシュ コード プロバイダーと既定の比較子を使用します。 既定のハッシュ コード プロバイダーは、 GetHashCode() の各キーの実装であり、既定の比較子は各キーの Equals(Object)の実装です。
例外
capacity が 0 未満です。
-又は-
loadFactor が 0.1 未満です。
-又は-
loadFactor が 1.0 より大きい。
例
次のコード例では、異なる Hashtable コンストラクターを使用してハッシュ テーブルを作成し、それぞれが同じ要素を含む場合でも、ハッシュ テーブルの動作の違いを示します。
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
if (myComparer.Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create a hash table using the default comparer.
Hashtable myHT1 = new Hashtable(3, .8f);
myHT1.Add("FIRST", "Hello");
myHT1.Add("SECOND", "World");
myHT1.Add("THIRD", "!");
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Hashtable myHT2 = new Hashtable(3, .8f, new myCultureComparer());
myHT2.Add("FIRST", "Hello");
myHT2.Add("SECOND", "World");
myHT2.Add("THIRD", "!");
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
CultureInfo myCul = new CultureInfo("tr-TR");
Hashtable myHT3 = new Hashtable(3, .8f, new myCultureComparer(myCul));
myHT3.Add("FIRST", "Hello");
myHT3.Add("SECOND", "World");
myHT3.Add("THIRD", "!");
// Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"));
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"));
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"));
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
If (myComparer.Compare(x, y) = 0) Then
Return True
Else
Return False
End If
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(3, System.Convert.ToSingle(0.8))
myHT1.Add("FIRST", "Hello")
myHT1.Add("SECOND", "World")
myHT1.Add("THIRD", "!")
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(3, System.Convert.ToSingle(0.8), _
New myCultureComparer())
myHT2.Add("FIRST", "Hello")
myHT2.Add("SECOND", "World")
myHT2.Add("THIRD", "!")
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(3, System.Convert.ToSingle(0.8), _
New myCultureComparer(myCul))
myHT3.Add("FIRST", "Hello")
myHT3.Add("SECOND", "World")
myHT3.Add("THIRD", "!")
' Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"))
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"))
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"))
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
注釈
初期容量を指定すると、 Hashtable オブジェクトに要素を追加するときに、多数のサイズ変更操作を実行する必要がなくなります。 容量は、負荷係数に基づいて必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。 負荷係数 1.0 は、速度とサイズの最適なバランスです。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
IEqualityComparer オブジェクトには、ハッシュ コード プロバイダーと比較子の両方が含まれます。 IEqualityComparer コンストラクターでHashtableを使用する場合、Hashtableのキーとして使用されるオブジェクトは、Object.GetHashCodeメソッドとObject.Equalsメソッドをオーバーライドする必要はありません。
ハッシュ コード プロバイダーは、 Hashtable内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
IEqualityComparerでは、大文字と小文字を区別しない文字列を使用して検索を実行するなどのシナリオが可能になります。
このコンストラクターは O(n) 操作です。ここで、 n は capacity パラメーターです。
こちらもご覧ください
適用対象
Hashtable(Int32, IHashCodeProvider, IComparer)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
注意事項
This constructor has been deprecated. Use Hashtable(int, IEqualityComparer) instead.
注意事項
Please use Hashtable(int, IEqualityComparer) instead.
指定した初期容量、ハッシュ コード プロバイダー、比較子、および既定の読み込み係数を使用して、 Hashtable クラスの新しい空のインスタンスを初期化します。
public:
Hashtable(int capacity, System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
[System.Obsolete("This constructor has been deprecated. Use Hashtable(int, IEqualityComparer) instead.")]
public Hashtable(int capacity, System.Collections.IHashCodeProvider? hcp, System.Collections.IComparer? comparer);
[System.Obsolete("Please use Hashtable(int, IEqualityComparer) instead.")]
public Hashtable(int capacity, System.Collections.IHashCodeProvider? hcp, System.Collections.IComparer? comparer);
[System.Obsolete("Please use Hashtable(int, IEqualityComparer) instead.")]
public Hashtable(int capacity, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
public Hashtable(int capacity, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
[<System.Obsolete("This constructor has been deprecated. Use Hashtable(int, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : int * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(int, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : int * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
new System.Collections.Hashtable : int * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (capacity As Integer, hcp As IHashCodeProvider, comparer As IComparer)
パラメーター
IHashCodeProvider内のすべてのキーのハッシュ コードを提供するHashtable オブジェクト。
-又は-
null は、各キーの GetHashCode()の実装である既定のハッシュ コード プロバイダーを使用します。
- comparer
- IComparer
2 つのキーが等しいかどうかを判断するために使用する IComparer オブジェクト。
-又は-
null は、各キーの Equals(Object)の実装である既定の比較子を使用します。
- 属性
例外
capacity が 0 未満です。
注釈
初期容量を指定すると、 Hashtable オブジェクトに要素を追加するときに、多数のサイズ変更操作を実行する必要がなくなります。 容量は、負荷係数に基づいて必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
ハッシュ コード プロバイダーは、 Hashtable内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
カスタム ハッシュ コード プロバイダーとカスタム比較子を使用すると、大文字と小文字を区別しない文字列で検索を実行するなどのシナリオが可能になります。
このコンストラクターは O(n) 操作です。ここで、 n は capacity パラメーターです。
こちらもご覧ください
適用対象
Hashtable(IDictionary, Single, IEqualityComparer)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
指定したディクショナリの要素を新しいHashtable オブジェクトにコピーして、Hashtable クラスの新しいインスタンスを初期化します。 新しい Hashtable オブジェクトは、コピーされた要素の数と同じ初期容量を持ち、指定された荷重係数と IEqualityComparer オブジェクトを使用します。
public:
Hashtable(System::Collections::IDictionary ^ d, float loadFactor, System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(System.Collections.IDictionary d, float loadFactor, System.Collections.IEqualityComparer equalityComparer);
public Hashtable(System.Collections.IDictionary d, float loadFactor, System.Collections.IEqualityComparer? equalityComparer);
new System.Collections.Hashtable : System.Collections.IDictionary * single * System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (d As IDictionary, loadFactor As Single, equalityComparer As IEqualityComparer)
パラメーター
新しいIDictionary オブジェクトにコピーするHashtable オブジェクト。
- loadFactor
- Single
0.1 ~ 1.0 の範囲の数値に、最適なパフォーマンスを提供する既定値を乗算します。 結果は、バケットに対する要素の最大比率です。
- equalityComparer
- IEqualityComparer
IEqualityComparerで使用するハッシュ コード プロバイダーと比較子を定義するHashtable オブジェクト。
-又は-
null を使用して、既定のハッシュ コード プロバイダーと既定の比較子を使用します。 既定のハッシュ コード プロバイダーは、 GetHashCode() の各キーの実装であり、既定の比較子は各キーの Equals(Object)の実装です。
例外
d は nullです。
例
次のコード例では、異なる Hashtable コンストラクターを使用してハッシュ テーブルを作成し、それぞれが同じ要素を含む場合でも、ハッシュ テーブルの動作の違いを示します。
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
if (myComparer.Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create the dictionary.
SortedList mySL = new SortedList();
mySL.Add("FIRST", "Hello");
mySL.Add("SECOND", "World");
mySL.Add("THIRD", "!");
// Create a hash table using the default comparer.
Hashtable myHT1 = new Hashtable(mySL, .8f);
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Hashtable myHT2 = new Hashtable(mySL, .8f,
new myCultureComparer());
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
CultureInfo myCul = new CultureInfo("tr-TR");
Hashtable myHT3 = new Hashtable(mySL, .8f, new myCultureComparer(myCul));
// Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"));
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"));
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"));
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
If (myComparer.Compare(x, y) = 0) Then
Return True
Else
Return False
End If
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create the dictionary.
Dim mySL As New SortedList()
mySL.Add("FIRST", "Hello")
mySL.Add("SECOND", "World")
mySL.Add("THIRD", "!")
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(mySL, System.Convert.ToSingle(0.8))
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(mySL, System.Convert.ToSingle(0.8), _
New myCultureComparer())
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(mySL, System.Convert.ToSingle(0.8), _
New myCultureComparer(myCul))
' Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"))
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"))
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"))
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
注釈
初期容量は、ソース ディクショナリ内の要素の数に設定されます。 容量は、負荷係数に基づいて必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。 負荷係数 1.0 は、速度とサイズの最適なバランスです。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
IEqualityComparer オブジェクトには、ハッシュ コード プロバイダーと比較子の両方が含まれます。 IEqualityComparer コンストラクターでHashtableを使用する場合、Hashtable オブジェクトでキーとして使用されるオブジェクトは、Object.GetHashCodeメソッドとObject.Equalsメソッドをオーバーライドする必要はありません。
ハッシュ コード プロバイダーは、 Hashtable内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
IEqualityComparerでは、大文字と小文字を区別しない文字列を使用して検索を実行するなどのシナリオが可能になります。
新しい Hashtable の要素は、列挙子が IDictionary オブジェクトを反復処理するのと同じ順序で並べ替えられます。
このコンストラクターは O(n) 操作です。ここで、 n は d パラメーター内の要素の数です。
こちらもご覧ください
適用対象
Hashtable(IDictionary, IHashCodeProvider, IComparer)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
注意事項
This constructor has been deprecated. Use Hashtable(IDictionary, IEqualityComparer) instead.
注意事項
Please use Hashtable(IDictionary, IEqualityComparer) instead.
指定したディクショナリの要素を新しいHashtable オブジェクトにコピーして、Hashtable クラスの新しいインスタンスを初期化します。 新しい Hashtable オブジェクトは、コピーされた要素の数と同じ初期容量を持ち、既定の読み込み係数と、指定されたハッシュ コード プロバイダーと比較子を使用します。 この API は廃止されています。 別の方法については、 Hashtable(IDictionary, IEqualityComparer)を参照してください。
public:
Hashtable(System::Collections::IDictionary ^ d, System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
[System.Obsolete("This constructor has been deprecated. Use Hashtable(IDictionary, IEqualityComparer) instead.")]
public Hashtable(System.Collections.IDictionary d, System.Collections.IHashCodeProvider? hcp, System.Collections.IComparer? comparer);
[System.Obsolete("Please use Hashtable(IDictionary, IEqualityComparer) instead.")]
public Hashtable(System.Collections.IDictionary d, System.Collections.IHashCodeProvider? hcp, System.Collections.IComparer? comparer);
[System.Obsolete("Please use Hashtable(IDictionary, IEqualityComparer) instead.")]
public Hashtable(System.Collections.IDictionary d, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
public Hashtable(System.Collections.IDictionary d, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
[<System.Obsolete("This constructor has been deprecated. Use Hashtable(IDictionary, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : System.Collections.IDictionary * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(IDictionary, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : System.Collections.IDictionary * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
new System.Collections.Hashtable : System.Collections.IDictionary * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (d As IDictionary, hcp As IHashCodeProvider, comparer As IComparer)
パラメーター
新しいIDictionary オブジェクトにコピーするHashtable オブジェクト。
IHashCodeProvider内のすべてのキーのハッシュ コードを提供するHashtable オブジェクト。
-又は-
null は、各キーの GetHashCode()の実装である既定のハッシュ コード プロバイダーを使用します。
- comparer
- IComparer
2 つのキーが等しいかどうかを判断するために使用する IComparer オブジェクト。
-又は-
null は、各キーの Equals(Object)の実装である既定の比較子を使用します。
- 属性
例外
d は nullです。
注釈
初期容量は、ソース ディクショナリ内の要素の数に設定されます。 容量は、負荷係数に基づいて必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
ハッシュ コード プロバイダーは、 Hashtable オブジェクト内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
カスタム ハッシュ コード プロバイダーとカスタム比較子を使用すると、大文字と小文字を区別しない文字列で検索を実行するなどのシナリオが可能になります。
新しい Hashtable の要素は、列挙子が IDictionary オブジェクトを反復処理するのと同じ順序で並べ替えられます。
このコンストラクターは O(n) 操作です。ここで、 n は d パラメーター内の要素の数です。
こちらもご覧ください
適用対象
Hashtable(Int32, Single)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
指定した初期容量と読み込み係数、および既定のハッシュ コード プロバイダーと比較子を使用して、 Hashtable クラスの新しい空のインスタンスを初期化します。
public:
Hashtable(int capacity, float loadFactor);
public Hashtable(int capacity, float loadFactor);
new System.Collections.Hashtable : int * single -> System.Collections.Hashtable
Public Sub New (capacity As Integer, loadFactor As Single)
パラメーター
- loadFactor
- Single
0.1 ~ 1.0 の範囲の数値に、最適なパフォーマンスを提供する既定値を乗算します。 結果は、バケットに対する要素の最大比率です。
例外
capacity が 0 未満です。
-又は-
loadFactor が 0.1 未満です。
-又は-
loadFactor が 1.0 より大きい。
capacity がオーバーフローの原因です。
例
次のコード例では、異なる Hashtable コンストラクターを使用してハッシュ テーブルを作成し、それぞれが同じ要素を含む場合でも、ハッシュ テーブルの動作の違いを示します。
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
if (myComparer.Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create a hash table using the default comparer.
Hashtable myHT1 = new Hashtable(3, .8f);
myHT1.Add("FIRST", "Hello");
myHT1.Add("SECOND", "World");
myHT1.Add("THIRD", "!");
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Hashtable myHT2 = new Hashtable(3, .8f, new myCultureComparer());
myHT2.Add("FIRST", "Hello");
myHT2.Add("SECOND", "World");
myHT2.Add("THIRD", "!");
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
CultureInfo myCul = new CultureInfo("tr-TR");
Hashtable myHT3 = new Hashtable(3, .8f, new myCultureComparer(myCul));
myHT3.Add("FIRST", "Hello");
myHT3.Add("SECOND", "World");
myHT3.Add("THIRD", "!");
// Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"));
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"));
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"));
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
If (myComparer.Compare(x, y) = 0) Then
Return True
Else
Return False
End If
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(3, System.Convert.ToSingle(0.8))
myHT1.Add("FIRST", "Hello")
myHT1.Add("SECOND", "World")
myHT1.Add("THIRD", "!")
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(3, System.Convert.ToSingle(0.8), _
New myCultureComparer())
myHT2.Add("FIRST", "Hello")
myHT2.Add("SECOND", "World")
myHT2.Add("THIRD", "!")
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(3, System.Convert.ToSingle(0.8), _
New myCultureComparer(myCul))
myHT3.Add("FIRST", "Hello")
myHT3.Add("SECOND", "World")
myHT3.Add("THIRD", "!")
' Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"))
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"))
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"))
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
注釈
初期容量を指定すると、 Hashtable オブジェクトに要素を追加するときに、多数のサイズ変更操作を実行する必要がなくなります。 容量は、負荷係数に基づいて必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。 負荷係数 1.0 は、速度とサイズの最適なバランスです。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
ハッシュ コード プロバイダーは、 Hashtable内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
このコンストラクターは O(n) 操作です。ここで、 n は capacity パラメーターです。
こちらもご覧ください
適用対象
Hashtable(SerializationInfo, StreamingContext)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
注意事項
This API supports obsolete formatter-based serialization. It should not be called or extended by application code.
指定したHashtableおよびSerializationInfo オブジェクトを使用してシリアル化可能なStreamingContext クラスの新しい空のインスタンスを初期化します。
protected:
Hashtable(System::Runtime::Serialization::SerializationInfo ^ info, System::Runtime::Serialization::StreamingContext context);
[System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
protected Hashtable(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
protected Hashtable(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
[<System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
new System.Collections.Hashtable : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Collections.Hashtable
new System.Collections.Hashtable : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Collections.Hashtable
Protected Sub New (info As SerializationInfo, context As StreamingContext)
パラメーター
- info
- SerializationInfo
SerializationInfo オブジェクトのシリアル化に必要な情報を格納しているHashtable オブジェクト。
- context
- StreamingContext
StreamingContextに関連付けられたシリアル化ストリームのソースと宛先を格納しているHashtable オブジェクト。
- 属性
例外
info は nullです。
注釈
ハッシュ テーブルの容量は、読み込み係数に基づいてハッシュ テーブル バケットの最適な数を計算するために使用されます。 容量は、必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
ハッシュ コード プロバイダーは、 Hashtable オブジェクト内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
このコンストラクターは、O(n)がnされるCount操作です。
Hashtableの列挙子をシリアル化および逆シリアル化すると、要素が並べ替えられる可能性があるため、Reset メソッドを呼び出さずに列挙を続行することはできません。
こちらもご覧ください
- ISerializable
- SerializationInfo
- StreamingContext
- OnDeserialization(Object)
- GetHashCode()
- Equals(Object)
適用対象
Hashtable(IHashCodeProvider, IComparer)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
注意事項
This constructor has been deprecated. Use Hashtable(IEqualityComparer) instead.
注意事項
Please use Hashtable(IEqualityComparer) instead.
注意事項
This constructor has been deprecated. Use Hashtable(IEqualityComparer).
既定の初期容量と読み込み係数、および指定したハッシュ コード プロバイダーと比較子を使用して、 Hashtable クラスの新しい空のインスタンスを初期化します。
public:
Hashtable(System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
[System.Obsolete("This constructor has been deprecated. Use Hashtable(IEqualityComparer) instead.")]
public Hashtable(System.Collections.IHashCodeProvider? hcp, System.Collections.IComparer? comparer);
[System.Obsolete("Please use Hashtable(IEqualityComparer) instead.")]
public Hashtable(System.Collections.IHashCodeProvider? hcp, System.Collections.IComparer? comparer);
[System.Obsolete("This constructor has been deprecated. Use Hashtable(IEqualityComparer).")]
public Hashtable(System.Collections.IHashCodeProvider? hcp, System.Collections.IComparer? comparer);
[System.Obsolete("Please use Hashtable(IEqualityComparer) instead.")]
public Hashtable(System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
public Hashtable(System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
[<System.Obsolete("This constructor has been deprecated. Use Hashtable(IEqualityComparer) instead.")>]
new System.Collections.Hashtable : System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(IEqualityComparer) instead.")>]
new System.Collections.Hashtable : System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("This constructor has been deprecated. Use Hashtable(IEqualityComparer).")>]
new System.Collections.Hashtable : System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
new System.Collections.Hashtable : System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (hcp As IHashCodeProvider, comparer As IComparer)
パラメーター
IHashCodeProvider オブジェクト内のすべてのキーのハッシュ コードを提供するHashtable オブジェクト。
-又は-
null は、各キーの GetHashCode()の実装である既定のハッシュ コード プロバイダーを使用します。
- comparer
- IComparer
2 つのキーが等しいかどうかを判断するために使用する IComparer オブジェクト。
-又は-
null は、各キーの Equals(Object)の実装である既定の比較子を使用します。
- 属性
注釈
ハッシュ テーブルの容量は、読み込み係数に基づいてハッシュ テーブル バケットの最適な数を計算するために使用されます。 容量は、必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
ハッシュ コード プロバイダーは、 Hashtable オブジェクト内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
カスタム ハッシュ コード プロバイダーとカスタム比較子を使用すると、大文字と小文字を区別しない文字列で検索を実行するなどのシナリオが可能になります。
このコンストラクターは、 O(1) 操作です。
こちらもご覧ください
適用対象
Hashtable(IDictionary, Single)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
public:
Hashtable(System::Collections::IDictionary ^ d, float loadFactor);
public Hashtable(System.Collections.IDictionary d, float loadFactor);
new System.Collections.Hashtable : System.Collections.IDictionary * single -> System.Collections.Hashtable
Public Sub New (d As IDictionary, loadFactor As Single)
パラメーター
新しいIDictionary オブジェクトにコピーするHashtable オブジェクト。
- loadFactor
- Single
0.1 ~ 1.0 の範囲の数値に、最適なパフォーマンスを提供する既定値を乗算します。 結果は、バケットに対する要素の最大比率です。
例外
d は nullです。
例
次のコード例では、異なる Hashtable コンストラクターを使用してハッシュ テーブルを作成し、それぞれが同じ要素を含む場合でも、ハッシュ テーブルの動作の違いを示します。
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
if (myComparer.Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create the dictionary.
SortedList mySL = new SortedList();
mySL.Add("FIRST", "Hello");
mySL.Add("SECOND", "World");
mySL.Add("THIRD", "!");
// Create a hash table using the default comparer.
Hashtable myHT1 = new Hashtable(mySL, .8f);
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Hashtable myHT2 = new Hashtable(mySL, .8f,
new myCultureComparer());
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
CultureInfo myCul = new CultureInfo("tr-TR");
Hashtable myHT3 = new Hashtable(mySL, .8f, new myCultureComparer(myCul));
// Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"));
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"));
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"));
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
If (myComparer.Compare(x, y) = 0) Then
Return True
Else
Return False
End If
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create the dictionary.
Dim mySL As New SortedList()
mySL.Add("FIRST", "Hello")
mySL.Add("SECOND", "World")
mySL.Add("THIRD", "!")
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(mySL, System.Convert.ToSingle(0.8))
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(mySL, System.Convert.ToSingle(0.8), _
New myCultureComparer())
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(mySL, System.Convert.ToSingle(0.8), _
New myCultureComparer(myCul))
' Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"))
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"))
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"))
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
注釈
初期容量は、ソース ディクショナリ内の要素の数に設定されます。 容量は、負荷係数に基づいて必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。 負荷係数 1.0 は、速度とサイズの最適なバランスです。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
ハッシュ コード プロバイダーは、 Hashtable オブジェクト内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
新しい Hashtable の要素は、列挙子が IDictionary オブジェクトを反復処理するのと同じ順序で並べ替えられます。
このコンストラクターは O(n) 操作です。ここで、 n は d パラメーター内の要素の数です。
こちらもご覧ください
適用対象
Hashtable(IDictionary, IEqualityComparer)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
指定したディクショナリから新しいHashtable オブジェクトに要素をコピーして、Hashtable クラスの新しいインスタンスを初期化します。 新しい Hashtable オブジェクトは、コピーされた要素の数と同じ初期容量を持ち、既定の読み込み係数と指定した IEqualityComparer オブジェクトを使用します。
public:
Hashtable(System::Collections::IDictionary ^ d, System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(System.Collections.IDictionary d, System.Collections.IEqualityComparer equalityComparer);
public Hashtable(System.Collections.IDictionary d, System.Collections.IEqualityComparer? equalityComparer);
new System.Collections.Hashtable : System.Collections.IDictionary * System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (d As IDictionary, equalityComparer As IEqualityComparer)
パラメーター
新しいIDictionary オブジェクトにコピーするHashtable オブジェクト。
- equalityComparer
- IEqualityComparer
IEqualityComparerで使用するハッシュ コード プロバイダーと比較子を定義するHashtable オブジェクト。
-又は-
null を使用して、既定のハッシュ コード プロバイダーと既定の比較子を使用します。 既定のハッシュ コード プロバイダーは、 GetHashCode() の各キーの実装であり、既定の比較子は各キーの Equals(Object)の実装です。
例外
d は nullです。
例
次のコード例では、異なる Hashtable コンストラクターを使用してハッシュ テーブルを作成し、それぞれが同じ要素を含む場合でも、ハッシュ テーブルの動作の違いを示します。
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
return myComparer.Compare(x, y) == 0;
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create the dictionary.
var mySL = new SortedList();
mySL.Add("FIRST", "Hello");
mySL.Add("SECOND", "World");
mySL.Add("THIRD", "!");
// Create a hash table using the default comparer.
var myHT1 = new Hashtable(mySL);
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
var myHT2 = new Hashtable(mySL, new myCultureComparer());
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
var myCul = new CultureInfo("tr-TR");
var myHT3 = new Hashtable(mySL, new myCultureComparer(myCul));
// Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}");
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}");
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}");
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
Return myComparer.Compare(x, y) = 0
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create the dictionary.
Dim mySL As New SortedList()
mySL.Add("FIRST", "Hello")
mySL.Add("SECOND", "World")
mySL.Add("THIRD", "!")
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(mySL)
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(mySL, New myCultureComparer())
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(mySL, New myCultureComparer(myCul))
' Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}")
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}")
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}")
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
注釈
初期容量は、ソース ディクショナリ内の要素の数に設定されます。 容量は、負荷係数に基づいて必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
IEqualityComparer オブジェクトには、ハッシュ コード プロバイダーと比較子の両方が含まれます。 IEqualityComparer コンストラクターでHashtableを使用する場合、Hashtable オブジェクトでキーとして使用されるオブジェクトは、Object.GetHashCodeメソッドとObject.Equalsメソッドをオーバーライドする必要はありません。
ハッシュ コード プロバイダーは、 Hashtable内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
IEqualityComparerでは、大文字と小文字を区別しない文字列を使用して検索を実行するなどのシナリオが可能になります。
新しい Hashtable の要素は、列挙子が IDictionary オブジェクトを反復処理するのと同じ順序で並べ替えられます。
このコンストラクターは O(n) 操作です。ここで、 n は d パラメーター内の要素の数です。
こちらもご覧ください
適用対象
Hashtable(Int32)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
指定した初期容量と、既定の読み込み係数、ハッシュ コード プロバイダー、および比較子を使用して、 Hashtable クラスの新しい空のインスタンスを初期化します。
public:
Hashtable(int capacity);
public Hashtable(int capacity);
new System.Collections.Hashtable : int -> System.Collections.Hashtable
Public Sub New (capacity As Integer)
パラメーター
例外
capacity が 0 未満です。
例
次のコード例では、異なる Hashtable コンストラクターを使用してハッシュ テーブルを作成し、それぞれが同じ要素を含む場合でも、ハッシュ テーブルの動作の違いを示します。
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
if (myComparer.Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create a hash table using the default comparer.
Hashtable myHT1 = new Hashtable(3);
myHT1.Add("FIRST", "Hello");
myHT1.Add("SECOND", "World");
myHT1.Add("THIRD", "!");
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Hashtable myHT2 = new Hashtable(3, new myCultureComparer());
myHT2.Add("FIRST", "Hello");
myHT2.Add("SECOND", "World");
myHT2.Add("THIRD", "!");
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
CultureInfo myCul = new CultureInfo("tr-TR");
Hashtable myHT3 = new Hashtable(3, new myCultureComparer(myCul));
myHT3.Add("FIRST", "Hello");
myHT3.Add("SECOND", "World");
myHT3.Add("THIRD", "!");
// Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"));
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"));
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"));
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
If (myComparer.Compare(x, y) = 0) Then
Return True
Else
Return False
End If
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(3)
myHT1.Add("FIRST", "Hello")
myHT1.Add("SECOND", "World")
myHT1.Add("THIRD", "!")
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(3, New myCultureComparer())
myHT2.Add("FIRST", "Hello")
myHT2.Add("SECOND", "World")
myHT2.Add("THIRD", "!")
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(3, New myCultureComparer(myCul))
myHT3.Add("FIRST", "Hello")
myHT3.Add("SECOND", "World")
myHT3.Add("THIRD", "!")
' Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"))
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"))
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"))
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
注釈
初期容量を指定すると、 Hashtable オブジェクトに要素を追加するときに、多数のサイズ変更操作を実行する必要がなくなります。 容量は、負荷係数に基づいて必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
ハッシュ コード プロバイダーは、 Hashtable内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
このコンストラクターは、O(n)がnされるcapacity操作です。
こちらもご覧ください
適用対象
Hashtable(IEqualityComparer)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
既定の初期容量と読み込み係数、および指定したHashtable オブジェクトを使用して、IEqualityComparer クラスの新しい空のインスタンスを初期化します。
public:
Hashtable(System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(System.Collections.IEqualityComparer equalityComparer);
public Hashtable(System.Collections.IEqualityComparer? equalityComparer);
new System.Collections.Hashtable : System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (equalityComparer As IEqualityComparer)
パラメーター
- equalityComparer
- IEqualityComparer
IEqualityComparer オブジェクトで使用するハッシュ コード プロバイダーと比較子を定義するHashtable オブジェクト。
-又は-
null を使用して、既定のハッシュ コード プロバイダーと既定の比較子を使用します。 既定のハッシュ コード プロバイダーは、 GetHashCode() の各キーの実装であり、既定の比較子は各キーの Equals(Object)の実装です。
例
次のコード例では、異なる Hashtable コンストラクターを使用してハッシュ テーブルを作成し、それぞれが同じ要素を含む場合でも、ハッシュ テーブルの動作の違いを示します。
using System;
using System.Collections;
using System.Globalization;
class myComparer : IEqualityComparer
{
public new bool Equals(object x, object y)
{
return x.Equals(y);
}
public int GetHashCode(object obj)
{
return obj.ToString().ToLower().GetHashCode();
}
}
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
return myComparer.Compare(x, y) == 0;
}
public int GetHashCode(object obj)
{
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create a hash table using the default comparer.
var myHT1 = new Hashtable();
myHT1.Add("FIRST", "Hello");
myHT1.Add("SECOND", "World");
myHT1.Add("THIRD", "!");
// Create a hash table using the specified IEqualityComparer that uses
// the default Object.Equals to determine equality.
var myHT2 = new Hashtable(new myComparer());
myHT2.Add("FIRST", "Hello");
myHT2.Add("SECOND", "World");
myHT2.Add("THIRD", "!");
// Create a hash table using a case-insensitive hash code provider and
// case-insensitive comparer based on the InvariantCulture.
Hashtable myHT3 = new Hashtable(
CaseInsensitiveHashCodeProvider.DefaultInvariant,
CaseInsensitiveComparer.DefaultInvariant);
myHT3.Add("FIRST", "Hello");
myHT3.Add("SECOND", "World");
myHT3.Add("THIRD", "!");
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
var myCul = new CultureInfo("tr-TR");
var myHT4 = new Hashtable(new myCultureComparer(myCul));
myHT4.Add("FIRST", "Hello");
myHT4.Add("SECOND", "World");
myHT4.Add("THIRD", "!");
// Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}");
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}");
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}");
Console.WriteLine($"first is in myHT4: {myHT4.ContainsKey("first")}");
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: False
first is in myHT3: True
first is in myHT4: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myComparer
Implements IEqualityComparer
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
Return x.Equals(y)
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
Return myComparer.Compare(x, y) = 0
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable()
myHT1.Add("FIRST", "Hello")
myHT1.Add("SECOND", "World")
myHT1.Add("THIRD", "!")
' Create a hash table using the specified IEqualityComparer that uses
' the default Object.Equals to determine equality.
Dim myHT2 As New Hashtable(New myComparer())
myHT2.Add("FIRST", "Hello")
myHT2.Add("SECOND", "World")
myHT2.Add("THIRD", "!")
' Create a hash table using a case-insensitive hash code provider and
' case-insensitive comparer based on the InvariantCulture.
Dim myHT3 As New Hashtable( _
CaseInsensitiveHashCodeProvider.DefaultInvariant, _
CaseInsensitiveComparer.DefaultInvariant)
myHT3.Add("FIRST", "Hello")
myHT3.Add("SECOND", "World")
myHT3.Add("THIRD", "!")
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT4 As New Hashtable(New myCultureComparer(myCul))
myHT4.Add("FIRST", "Hello")
myHT4.Add("SECOND", "World")
myHT4.Add("THIRD", "!")
' Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}")
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}")
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}")
Console.WriteLine($"first is in myHT4: {myHT4.ContainsKey("first")}")
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'first is in myHT1: False
'first is in myHT2: False
'first is in myHT3: True
'first is in myHT4: False
注釈
ハッシュ テーブルの容量は、読み込み係数に基づいてハッシュ テーブル バケットの最適な数を計算するために使用されます。 容量は、必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
IEqualityComparer オブジェクトには、ハッシュ コード プロバイダーと比較子の両方が含まれます。 IEqualityComparer コンストラクターでHashtableを使用する場合、Hashtable オブジェクトでキーとして使用されるオブジェクトは、Object.GetHashCodeメソッドとObject.Equalsメソッドをオーバーライドする必要はありません。
ハッシュ コード プロバイダーは、 Hashtable内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
IEqualityComparerでは、大文字と小文字を区別しない文字列を使用して検索を実行するなどのシナリオが可能になります。
このコンストラクターは、 O(1) 操作です。
こちらもご覧ください
適用対象
Hashtable(IDictionary)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
public:
Hashtable(System::Collections::IDictionary ^ d);
public Hashtable(System.Collections.IDictionary d);
new System.Collections.Hashtable : System.Collections.IDictionary -> System.Collections.Hashtable
Public Sub New (d As IDictionary)
パラメーター
新しいIDictionary オブジェクトにコピーするHashtable オブジェクト。
例外
d は nullです。
例
次のコード例では、異なる Hashtable コンストラクターを使用してハッシュ テーブルを作成し、それぞれが同じ要素を含む場合でも、ハッシュ テーブルの動作の違いを示します。
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
return myComparer.Compare(x, y) == 0;
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create the dictionary.
var mySL = new SortedList();
mySL.Add("FIRST", "Hello");
mySL.Add("SECOND", "World");
mySL.Add("THIRD", "!");
// Create a hash table using the default comparer.
var myHT1 = new Hashtable(mySL);
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
var myHT2 = new Hashtable(mySL, new myCultureComparer());
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
var myCul = new CultureInfo("tr-TR");
var myHT3 = new Hashtable(mySL, new myCultureComparer(myCul));
// Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}");
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}");
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}");
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
Return myComparer.Compare(x, y) = 0
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create the dictionary.
Dim mySL As New SortedList()
mySL.Add("FIRST", "Hello")
mySL.Add("SECOND", "World")
mySL.Add("THIRD", "!")
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(mySL)
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(mySL, New myCultureComparer())
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(mySL, New myCultureComparer(myCul))
' Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}")
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}")
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}")
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
注釈
初期容量は、ソース ディクショナリ内の要素の数に設定されます。 容量は、負荷係数に基づいて必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
ハッシュ コード プロバイダーは、 Hashtable オブジェクト内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
新しい Hashtable の要素は、列挙子が IDictionary オブジェクトを反復処理するのと同じ順序で並べ替えられます。
このコンストラクターは O(n) 操作です。ここで、 n は d パラメーター内の要素の数です。
こちらもご覧ください
適用対象
Hashtable(Int32, IEqualityComparer)
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
- ソース:
- Hashtable.cs
指定した初期容量とHashtable、および既定の読み込み係数を使用して、IEqualityComparer クラスの新しい空のインスタンスを初期化します。
public:
Hashtable(int capacity, System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(int capacity, System.Collections.IEqualityComparer equalityComparer);
public Hashtable(int capacity, System.Collections.IEqualityComparer? equalityComparer);
new System.Collections.Hashtable : int * System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (capacity As Integer, equalityComparer As IEqualityComparer)
パラメーター
- equalityComparer
- IEqualityComparer
IEqualityComparerで使用するハッシュ コード プロバイダーと比較子を定義するHashtable オブジェクト。
-又は-
null を使用して、既定のハッシュ コード プロバイダーと既定の比較子を使用します。 既定のハッシュ コード プロバイダーは、 GetHashCode() の各キーの実装であり、既定の比較子は各キーの Equals(Object)の実装です。
例外
capacity が 0 未満です。
例
次のコード例では、異なる Hashtable コンストラクターを使用してハッシュ テーブルを作成し、それぞれが同じ要素を含む場合でも、ハッシュ テーブルの動作の違いを示します。
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
if (myComparer.Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create a hash table using the default comparer.
Hashtable myHT1 = new Hashtable(3);
myHT1.Add("FIRST", "Hello");
myHT1.Add("SECOND", "World");
myHT1.Add("THIRD", "!");
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Hashtable myHT2 = new Hashtable(3, new myCultureComparer());
myHT2.Add("FIRST", "Hello");
myHT2.Add("SECOND", "World");
myHT2.Add("THIRD", "!");
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
CultureInfo myCul = new CultureInfo("tr-TR");
Hashtable myHT3 = new Hashtable(3, new myCultureComparer(myCul));
myHT3.Add("FIRST", "Hello");
myHT3.Add("SECOND", "World");
myHT3.Add("THIRD", "!");
// Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"));
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"));
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"));
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
If (myComparer.Compare(x, y) = 0) Then
Return True
Else
Return False
End If
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(3)
myHT1.Add("FIRST", "Hello")
myHT1.Add("SECOND", "World")
myHT1.Add("THIRD", "!")
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(3, New myCultureComparer())
myHT2.Add("FIRST", "Hello")
myHT2.Add("SECOND", "World")
myHT2.Add("THIRD", "!")
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(3, New myCultureComparer(myCul))
myHT3.Add("FIRST", "Hello")
myHT3.Add("SECOND", "World")
myHT3.Add("THIRD", "!")
' Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"))
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"))
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"))
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
注釈
初期容量を指定すると、 Hashtable オブジェクトに要素を追加するときに、多数のサイズ変更操作を実行する必要がなくなります。 容量は、負荷係数に基づいて必要に応じて自動的に増加します。
負荷係数は、バケットに対する要素の最大比率です。 負荷係数を小さくすると、メモリ消費量が増加するコストで検索が高速になります。
実際の読み込み係数が指定された負荷係数に達すると、バケットの数は、現在のバケット数の 2 倍を超える最小の素数に自動的に増加します。
IEqualityComparer オブジェクトには、ハッシュ コード プロバイダーと比較子の両方が含まれます。 IEqualityComparer コンストラクターでHashtableを使用する場合、Hashtableのキーとして使用されるオブジェクトは、Object.GetHashCodeメソッドとObject.Equalsメソッドをオーバーライドする必要はありません。
ハッシュ コード プロバイダーは、 Hashtable内のキーのハッシュ コードを分配します。 既定のハッシュ コード プロバイダーは、 Object.GetHashCodeのキーの実装です。
比較子は、2 つのキーが等しいかどうかを判断します。 Hashtable内のすべてのキーは一意である必要があります。 既定の比較子は、 Object.Equalsのキーの実装です。
IEqualityComparerでは、大文字と小文字を区別しない文字列を使用して検索を実行するなどのシナリオが可能になります。
このコンストラクターは O(n) 操作です。ここで、 n は capacity パラメーターです。