Bahasa

Hashtable Konstruktor

Definisi

Menginisialisasi instans baru dari kelas Hashtable.

Overload

Nama Deskripsi
Hashtable()

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal default, faktor beban, penyedia kode hash, dan pembanding.

Hashtable(Int32, Single, IHashCodeProvider, IComparer)
Kedaluwarsa.
Kedaluwarsa.

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal, faktor muatan, penyedia kode hash, dan pembanding yang ditentukan.

Hashtable(IDictionary, Single, IHashCodeProvider, IComparer)
Kedaluwarsa.
Kedaluwarsa.

Menginisialisasi instans Hashtable baru kelas dengan menyalin elemen dari kamus yang ditentukan ke objek baru Hashtable . Objek baru Hashtable memiliki kapasitas awal yang sama dengan jumlah elemen yang disalin, dan menggunakan faktor beban, penyedia kode hash, dan comparer yang ditentukan.

Hashtable(Int32, Single, IEqualityComparer)

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal, faktor beban, dan IEqualityComparer objek yang ditentukan.

Hashtable(Int32, IHashCodeProvider, IComparer)
Kedaluwarsa.
Kedaluwarsa.

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal yang ditentukan, penyedia kode hash, pembanding, dan faktor beban default.

Hashtable(IDictionary, Single, IEqualityComparer)

Menginisialisasi instans Hashtable baru kelas dengan menyalin elemen dari kamus yang ditentukan ke objek baru Hashtable . Objek baru Hashtable memiliki kapasitas awal yang sama dengan jumlah elemen yang disalin, dan menggunakan faktor beban dan IEqualityComparer objek yang ditentukan.

Hashtable(IDictionary, IHashCodeProvider, IComparer)
Kedaluwarsa.
Kedaluwarsa.

Menginisialisasi instans Hashtable baru kelas dengan menyalin elemen dari kamus yang ditentukan ke objek baru Hashtable . Objek baru Hashtable memiliki kapasitas awal yang sama dengan jumlah elemen yang disalin, dan menggunakan faktor beban default, dan penyedia kode hash dan pembanding yang ditentukan. API ini kedaluarsa. Untuk alternatif, lihat Hashtable(IDictionary, IEqualityComparer).

Hashtable(Int32, Single)

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal dan faktor beban yang ditentukan, dan penyedia kode hash default dan pembanding.

Hashtable(SerializationInfo, StreamingContext)
Kedaluwarsa.

Menginisialisasi instans baru yang kosong dari Hashtable kelas yang dapat diserialisasikan menggunakan objek dan SerializationInfo yang ditentukanStreamingContext.

Hashtable(IHashCodeProvider, IComparer)
Kedaluwarsa.
Kedaluwarsa.
Kedaluwarsa.

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal default dan faktor beban, dan penyedia kode hash dan pembanding yang ditentukan.

Hashtable(IDictionary, Single)

Menginisialisasi instans Hashtable baru kelas dengan menyalin elemen dari kamus yang ditentukan ke objek baru Hashtable . Objek baru Hashtable memiliki kapasitas awal yang sama dengan jumlah elemen yang disalin, dan menggunakan faktor beban yang ditentukan, dan penyedia kode hash default dan pembanding.

Hashtable(IDictionary, IEqualityComparer)

Menginisialisasi instans Hashtable baru kelas dengan menyalin elemen dari kamus yang ditentukan ke objek baru Hashtable . Objek baru Hashtable memiliki kapasitas awal yang sama dengan jumlah elemen yang disalin, dan menggunakan faktor beban default dan objek yang ditentukan IEqualityComparer .

Hashtable(Int32)

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal yang ditentukan, dan faktor beban default, penyedia kode hash, dan pembanding.

Hashtable(IEqualityComparer)

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal default dan faktor beban, dan objek yang ditentukan IEqualityComparer .

Hashtable(IDictionary)

Menginisialisasi instans Hashtable baru kelas dengan menyalin elemen dari kamus yang ditentukan ke objek baru Hashtable . Objek baru Hashtable memiliki kapasitas awal yang sama dengan jumlah elemen yang disalin, dan menggunakan faktor beban default, penyedia kode hash, dan pembanding.

Hashtable(Int32, IEqualityComparer)

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal yang ditentukan dan IEqualityComparer, dan faktor beban default.

Hashtable()

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal default, faktor beban, penyedia kode hash, dan pembanding.

public:
 Hashtable();
public Hashtable();
Public Sub New ()

Contoh

Contoh kode berikut membuat tabel hash menggunakan konstruktor yang berbeda Hashtable dan menunjukkan perbedaan perilaku tabel hash, bahkan jika masing-masing berisi elemen yang sama.

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

Keterangan

Kapasitas tabel hash digunakan untuk menghitung jumlah wadah tabel hash yang optimal berdasarkan faktor beban. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Penyedia kode hash mengeluarkan kode hash untuk kunci dalam Hashtable objek. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

Konstruktor ini adalah O(1) operasi.

Lihat juga

Berlaku untuk

Hashtable(Int32, Single, IHashCodeProvider, IComparer)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Perhatian

This constructor has been deprecated. Use Hashtable(int, float, IEqualityComparer) instead.

Perhatian

Please use Hashtable(int, float, IEqualityComparer) instead.

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal, faktor muatan, penyedia kode hash, dan pembanding yang ditentukan.

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)

Parameter

capacity
Int32

Perkiraan jumlah elemen yang awalnya dapat dimuat Hashtable objek.

loadFactor
Single

Angka dalam rentang 0,1 hingga 1,0 yang dikalikan dengan nilai default yang memberikan performa terbaik. Hasilnya adalah rasio maksimum elemen terhadap wadah.

hcp
IHashCodeProvider

Objek IHashCodeProvider yang memasok kode hash untuk semua kunci di Hashtable.

-atau-

null untuk menggunakan penyedia kode hash default, yang merupakan implementasi setiap kunci dari GetHashCode().

comparer
IComparer

Objek IComparer yang digunakan untuk menentukan apakah dua kunci sama.

-atau-

null untuk menggunakan pembanding default, yang merupakan implementasi setiap kunci dari Equals(Object).

Atribut

Pengecualian

capacity kurang dari nol.

-atau-

loadFactor kurang dari 0,1.

-atau-

loadFactor lebih besar dari 1,0.

Keterangan

Menentukan kapasitas awal menghilangkan kebutuhan untuk melakukan sejumlah operasi pengubahan ukuran sambil menambahkan elemen ke Hashtable objek. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan berdasarkan faktor beban.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori. Faktor beban 1,0 adalah keseimbangan terbaik antara kecepatan dan ukuran.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Penyedia kode hash mengeluarkan kode hash untuk kunci di Hashtable. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

Penyedia kode hash kustom dan pembanding kustom mengaktifkan skenario seperti melakukan pencarian dengan string yang tidak peka huruf besar/kecil.

Konstruktor ini adalah O(n) operasi, di mana n adalah capacity parameter .

Lihat juga

Berlaku untuk

Hashtable(IDictionary, Single, IHashCodeProvider, IComparer)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Perhatian

This constructor has been deprecated. Use Hashtable(IDictionary, float, IEqualityComparer) instead.

Perhatian

Please use Hashtable(IDictionary, float, IEqualityComparer) instead.

Menginisialisasi instans Hashtable baru kelas dengan menyalin elemen dari kamus yang ditentukan ke objek baru Hashtable . Objek baru Hashtable memiliki kapasitas awal yang sama dengan jumlah elemen yang disalin, dan menggunakan faktor beban, penyedia kode hash, dan comparer yang ditentukan.

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)

Parameter

d
IDictionary

Objek IDictionary untuk disalin ke objek baru Hashtable .

loadFactor
Single

Angka dalam rentang 0,1 hingga 1,0 yang dikalikan dengan nilai default yang memberikan performa terbaik. Hasilnya adalah rasio maksimum elemen terhadap wadah.

hcp
IHashCodeProvider

Objek IHashCodeProvider yang memasok kode hash untuk semua kunci di Hashtable.

-atau-

null untuk menggunakan penyedia kode hash default, yang merupakan implementasi setiap kunci dari GetHashCode().

comparer
IComparer

Objek IComparer yang digunakan untuk menentukan apakah dua kunci sama.

-atau-

null untuk menggunakan pembanding default, yang merupakan implementasi setiap kunci dari Equals(Object).

Atribut

Pengecualian

d adalah null.

loadFactor kurang dari 0,1.

-atau-

loadFactor lebih besar dari 1,0.

Keterangan

Kapasitas awal diatur ke jumlah elemen dalam kamus sumber. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan berdasarkan faktor beban.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori. Faktor beban 1,0 adalah keseimbangan terbaik antara kecepatan dan ukuran.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Penyedia kode hash mengeluarkan kode hash untuk kunci dalam Hashtable objek. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

Penyedia kode hash kustom dan pembanding kustom mengaktifkan skenario seperti melakukan pencarian dengan string yang tidak peka huruf besar/kecil.

Elemen baru Hashtable diurutkan dalam urutan yang sama di mana enumerator melakukan iterasi melalui IDictionary objek.

Konstruktor ini adalah O(n) operasi, di mana n adalah jumlah elemen dalam d parameter .

Berlaku untuk

Hashtable(Int32, Single, IEqualityComparer)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal, faktor beban, dan IEqualityComparer objek yang ditentukan.

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)

Parameter

capacity
Int32

Perkiraan jumlah elemen yang awalnya dapat dimuat Hashtable objek.

loadFactor
Single

Angka dalam rentang 0,1 hingga 1,0 yang dikalikan dengan nilai default yang memberikan performa terbaik. Hasilnya adalah rasio maksimum elemen terhadap wadah.

equalityComparer
IEqualityComparer

Objek IEqualityComparer yang mendefinisikan penyedia kode hash dan pembanding untuk digunakan dengan Hashtable.

-atau-

null untuk menggunakan penyedia kode hash default dan pembanding default. Penyedia kode hash default adalah implementasi GetHashCode() setiap kunci dan pembanding default adalah implementasi setiap kunci dari Equals(Object).

Pengecualian

capacity kurang dari nol.

-atau-

loadFactor kurang dari 0,1.

-atau-

loadFactor lebih besar dari 1,0.

Contoh

Contoh kode berikut membuat tabel hash menggunakan konstruktor yang berbeda Hashtable dan menunjukkan perbedaan perilaku tabel hash, bahkan jika masing-masing berisi elemen yang sama.

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

Keterangan

Menentukan kapasitas awal menghilangkan kebutuhan untuk melakukan sejumlah operasi pengubahan ukuran sambil menambahkan elemen ke Hashtable objek. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan berdasarkan faktor beban.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori. Faktor beban 1,0 adalah keseimbangan terbaik antara kecepatan dan ukuran.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Objek IEqualityComparer mencakup penyedia kode hash dan pembanding. IEqualityComparer Jika digunakan dalam Hashtable konstruktor, objek yang digunakan sebagai kunci dalam Hashtable tidak diperlukan untuk mengambil Object.GetHashCode alih metode dan Object.Equals .

Penyedia kode hash mengeluarkan kode hash untuk kunci di Hashtable. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

mengaktifkan IEqualityComparer skenario seperti melakukan pencarian dengan string yang tidak peka huruf besar/kecil.

Konstruktor ini adalah O(n) operasi, di mana n adalah capacity parameter .

Lihat juga

Berlaku untuk

Hashtable(Int32, IHashCodeProvider, IComparer)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Perhatian

This constructor has been deprecated. Use Hashtable(int, IEqualityComparer) instead.

Perhatian

Please use Hashtable(int, IEqualityComparer) instead.

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal yang ditentukan, penyedia kode hash, pembanding, dan faktor beban default.

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)

Parameter

capacity
Int32

Perkiraan jumlah elemen yang awalnya dapat dimuat Hashtable objek.

hcp
IHashCodeProvider

Objek IHashCodeProvider yang memasok kode hash untuk semua kunci di Hashtable.

-atau-

null untuk menggunakan penyedia kode hash default, yang merupakan implementasi setiap kunci dari GetHashCode().

comparer
IComparer

Objek IComparer yang digunakan untuk menentukan apakah dua kunci sama.

-atau-

null untuk menggunakan pembanding default, yang merupakan implementasi setiap kunci dari Equals(Object).

Atribut

Pengecualian

capacity kurang dari nol.

Keterangan

Menentukan kapasitas awal menghilangkan kebutuhan untuk melakukan sejumlah operasi pengubahan ukuran sambil menambahkan elemen ke Hashtable objek. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan berdasarkan faktor beban.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Penyedia kode hash mengeluarkan kode hash untuk kunci di Hashtable. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

Penyedia kode hash kustom dan pembanding kustom mengaktifkan skenario seperti melakukan pencarian dengan string yang tidak peka huruf besar/kecil.

Konstruktor ini adalah O(n) operasi, di mana n adalah capacity parameter .

Lihat juga

Berlaku untuk

Hashtable(IDictionary, Single, IEqualityComparer)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Menginisialisasi instans Hashtable baru kelas dengan menyalin elemen dari kamus yang ditentukan ke objek baru Hashtable . Objek baru Hashtable memiliki kapasitas awal yang sama dengan jumlah elemen yang disalin, dan menggunakan faktor beban dan IEqualityComparer objek yang ditentukan.

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)

Parameter

d
IDictionary

Objek IDictionary untuk disalin ke objek baru Hashtable .

loadFactor
Single

Angka dalam rentang 0,1 hingga 1,0 yang dikalikan dengan nilai default yang memberikan performa terbaik. Hasilnya adalah rasio maksimum elemen terhadap wadah.

equalityComparer
IEqualityComparer

Objek IEqualityComparer yang mendefinisikan penyedia kode hash dan pembanding untuk digunakan dengan Hashtable.

-atau-

null untuk menggunakan penyedia kode hash default dan pembanding default. Penyedia kode hash default adalah implementasi GetHashCode() setiap kunci dan pembanding default adalah implementasi setiap kunci dari Equals(Object).

Pengecualian

d adalah null.

loadFactor kurang dari 0,1.

-atau-

loadFactor lebih besar dari 1,0.

Contoh

Contoh kode berikut membuat tabel hash menggunakan konstruktor yang berbeda Hashtable dan menunjukkan perbedaan perilaku tabel hash, bahkan jika masing-masing berisi elemen yang sama.

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

Keterangan

Kapasitas awal diatur ke jumlah elemen dalam kamus sumber. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan berdasarkan faktor beban.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori. Faktor beban 1,0 adalah keseimbangan terbaik antara kecepatan dan ukuran.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Objek IEqualityComparer mencakup penyedia kode hash dan pembanding. IEqualityComparer Jika digunakan dalam Hashtable konstruktor, objek yang digunakan sebagai kunci dalam Hashtable objek tidak diperlukan untuk mengambil Object.GetHashCode alih metode dan Object.Equals .

Penyedia kode hash mengeluarkan kode hash untuk kunci di Hashtable. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

mengaktifkan IEqualityComparer skenario seperti melakukan pencarian dengan string yang tidak peka huruf besar/kecil.

Elemen baru Hashtable diurutkan dalam urutan yang sama di mana enumerator melakukan iterasi melalui IDictionary objek.

Konstruktor ini adalah O(n) operasi, di mana n adalah jumlah elemen dalam d parameter .

Lihat juga

Berlaku untuk

Hashtable(IDictionary, IHashCodeProvider, IComparer)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Perhatian

This constructor has been deprecated. Use Hashtable(IDictionary, IEqualityComparer) instead.

Perhatian

Please use Hashtable(IDictionary, IEqualityComparer) instead.

Menginisialisasi instans Hashtable baru kelas dengan menyalin elemen dari kamus yang ditentukan ke objek baru Hashtable . Objek baru Hashtable memiliki kapasitas awal yang sama dengan jumlah elemen yang disalin, dan menggunakan faktor beban default, dan penyedia kode hash dan pembanding yang ditentukan. API ini kedaluarsa. Untuk alternatif, lihat 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)

Parameter

d
IDictionary

Objek IDictionary untuk disalin ke objek baru Hashtable .

hcp
IHashCodeProvider

Objek IHashCodeProvider yang memasok kode hash untuk semua kunci di Hashtable.

-atau-

null untuk menggunakan penyedia kode hash default, yang merupakan implementasi setiap kunci dari GetHashCode().

comparer
IComparer

Objek IComparer yang digunakan untuk menentukan apakah dua kunci sama.

-atau-

null untuk menggunakan pembanding default, yang merupakan implementasi setiap kunci dari Equals(Object).

Atribut

Pengecualian

d adalah null.

Keterangan

Kapasitas awal diatur ke jumlah elemen dalam kamus sumber. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan berdasarkan faktor beban.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Penyedia kode hash mengeluarkan kode hash untuk kunci dalam Hashtable objek. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

Penyedia kode hash kustom dan pembanding kustom mengaktifkan skenario seperti melakukan pencarian dengan string yang tidak peka huruf besar/kecil.

Elemen baru Hashtable diurutkan dalam urutan yang sama di mana enumerator melakukan iterasi melalui IDictionary objek.

Konstruktor ini adalah O(n) operasi, di mana n adalah jumlah elemen dalam d parameter .

Lihat juga

Berlaku untuk

Hashtable(Int32, Single)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal dan faktor beban yang ditentukan, dan penyedia kode hash default dan pembanding.

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)

Parameter

capacity
Int32

Perkiraan jumlah elemen yang awalnya dapat dimuat Hashtable objek.

loadFactor
Single

Angka dalam rentang 0,1 hingga 1,0 yang dikalikan dengan nilai default yang memberikan performa terbaik. Hasilnya adalah rasio maksimum elemen terhadap wadah.

Pengecualian

capacity kurang dari nol.

-atau-

loadFactor kurang dari 0,1.

-atau-

loadFactor lebih besar dari 1,0.

capacity menyebabkan luapan.

Contoh

Contoh kode berikut membuat tabel hash menggunakan konstruktor yang berbeda Hashtable dan menunjukkan perbedaan perilaku tabel hash, bahkan jika masing-masing berisi elemen yang sama.

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

Keterangan

Menentukan kapasitas awal menghilangkan kebutuhan untuk melakukan sejumlah operasi pengubahan ukuran sambil menambahkan elemen ke Hashtable objek. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan berdasarkan faktor beban.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori. Faktor beban 1,0 adalah keseimbangan terbaik antara kecepatan dan ukuran.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Penyedia kode hash mengeluarkan kode hash untuk kunci di Hashtable. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

Konstruktor ini adalah O(n) operasi, di mana n adalah capacity parameter .

Lihat juga

Berlaku untuk

Hashtable(SerializationInfo, StreamingContext)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Perhatian

This API supports obsolete formatter-based serialization. It should not be called or extended by application code.

Menginisialisasi instans baru yang kosong dari Hashtable kelas yang dapat diserialisasikan menggunakan objek dan SerializationInfo yang ditentukanStreamingContext.

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)

Parameter

info
SerializationInfo

Objek SerializationInfo yang berisi informasi yang diperlukan untuk membuat serial objek Hashtable .

context
StreamingContext

Objek StreamingContext yang berisi sumber dan tujuan aliran berseri yang terkait dengan Hashtable.

Atribut

Pengecualian

info adalah null.

Keterangan

Kapasitas tabel hash digunakan untuk menghitung jumlah wadah tabel hash yang optimal berdasarkan faktor beban. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Penyedia kode hash mengeluarkan kode hash untuk kunci dalam Hashtable objek. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

Konstruktor ini adalah O(n) operasi, di mana n adalah Count.

Karena menserialisasikan dan mendeserialisasi enumerator untuk Hashtable dapat menyebabkan elemen disusun ulang, tidak mungkin untuk melanjutkan enumerasi tanpa memanggil Reset metode .

Lihat juga

Berlaku untuk

Hashtable(IHashCodeProvider, IComparer)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Perhatian

This constructor has been deprecated. Use Hashtable(IEqualityComparer) instead.

Perhatian

Please use Hashtable(IEqualityComparer) instead.

Perhatian

This constructor has been deprecated. Use Hashtable(IEqualityComparer).

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal default dan faktor beban, dan penyedia kode hash dan pembanding yang ditentukan.

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)

Parameter

hcp
IHashCodeProvider

Objek IHashCodeProvider yang memasok kode hash untuk semua kunci dalam Hashtable objek.

-atau-

null untuk menggunakan penyedia kode hash default, yang merupakan implementasi setiap kunci dari GetHashCode().

comparer
IComparer

Objek IComparer yang digunakan untuk menentukan apakah dua kunci sama.

-atau-

null untuk menggunakan pembanding default, yang merupakan implementasi setiap kunci dari Equals(Object).

Atribut

Keterangan

Kapasitas tabel hash digunakan untuk menghitung jumlah wadah tabel hash yang optimal berdasarkan faktor beban. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Penyedia kode hash mengeluarkan kode hash untuk kunci dalam Hashtable objek. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

Penyedia kode hash kustom dan pembanding kustom mengaktifkan skenario seperti melakukan pencarian dengan string yang tidak peka huruf besar/kecil.

Konstruktor ini adalah O(1) operasi.

Lihat juga

Berlaku untuk

Hashtable(IDictionary, Single)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Menginisialisasi instans Hashtable baru kelas dengan menyalin elemen dari kamus yang ditentukan ke objek baru Hashtable . Objek baru Hashtable memiliki kapasitas awal yang sama dengan jumlah elemen yang disalin, dan menggunakan faktor beban yang ditentukan, dan penyedia kode hash default dan pembanding.

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)

Parameter

d
IDictionary

Objek IDictionary untuk disalin ke objek baru Hashtable .

loadFactor
Single

Angka dalam rentang 0,1 hingga 1,0 yang dikalikan dengan nilai default yang memberikan performa terbaik. Hasilnya adalah rasio maksimum elemen terhadap wadah.

Pengecualian

d adalah null.

loadFactor kurang dari 0,1.

-atau-

loadFactor lebih besar dari 1,0.

Contoh

Contoh kode berikut membuat tabel hash menggunakan konstruktor yang berbeda Hashtable dan menunjukkan perbedaan perilaku tabel hash, bahkan jika masing-masing berisi elemen yang sama.

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

Keterangan

Kapasitas awal diatur ke jumlah elemen dalam kamus sumber. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan berdasarkan faktor beban.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori. Faktor beban 1,0 adalah keseimbangan terbaik antara kecepatan dan ukuran.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Penyedia kode hash mengeluarkan kode hash untuk kunci dalam Hashtable objek. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

Elemen baru Hashtable diurutkan dalam urutan yang sama di mana enumerator melakukan iterasi melalui IDictionary objek.

Konstruktor ini adalah O(n) operasi, di mana n adalah jumlah elemen dalam d parameter .

Lihat juga

Berlaku untuk

Hashtable(IDictionary, IEqualityComparer)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Menginisialisasi instans Hashtable baru kelas dengan menyalin elemen dari kamus yang ditentukan ke objek baru Hashtable . Objek baru Hashtable memiliki kapasitas awal yang sama dengan jumlah elemen yang disalin, dan menggunakan faktor beban default dan objek yang ditentukan 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)

Parameter

d
IDictionary

Objek IDictionary untuk disalin ke objek baru Hashtable .

equalityComparer
IEqualityComparer

Objek IEqualityComparer yang mendefinisikan penyedia kode hash dan pembanding untuk digunakan dengan Hashtable.

-atau-

null untuk menggunakan penyedia kode hash default dan pembanding default. Penyedia kode hash default adalah implementasi GetHashCode() setiap kunci dan pembanding default adalah implementasi setiap kunci dari Equals(Object).

Pengecualian

d adalah null.

Contoh

Contoh kode berikut membuat tabel hash menggunakan konstruktor yang berbeda Hashtable dan menunjukkan perbedaan perilaku tabel hash, bahkan jika masing-masing berisi elemen yang sama.

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

Keterangan

Kapasitas awal diatur ke jumlah elemen dalam kamus sumber. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan berdasarkan faktor beban.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Objek IEqualityComparer mencakup penyedia kode hash dan pembanding. IEqualityComparer Jika digunakan dalam Hashtable konstruktor, objek yang digunakan sebagai kunci dalam Hashtable objek tidak diperlukan untuk mengambil Object.GetHashCode alih metode dan Object.Equals .

Penyedia kode hash mengeluarkan kode hash untuk kunci di Hashtable. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

mengaktifkan IEqualityComparer skenario seperti melakukan pencarian dengan string yang tidak peka huruf besar/kecil.

Elemen baru Hashtable diurutkan dalam urutan yang sama di mana enumerator melakukan iterasi melalui IDictionary objek.

Konstruktor ini adalah O(n) operasi, di mana n adalah jumlah elemen dalam d parameter .

Lihat juga

Berlaku untuk

Hashtable(Int32)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal yang ditentukan, dan faktor beban default, penyedia kode hash, dan pembanding.

public:
 Hashtable(int capacity);
public Hashtable(int capacity);
new System.Collections.Hashtable : int -> System.Collections.Hashtable
Public Sub New (capacity As Integer)

Parameter

capacity
Int32

Perkiraan jumlah elemen yang awalnya dapat dimuat Hashtable objek.

Pengecualian

capacity kurang dari nol.

Contoh

Contoh kode berikut membuat tabel hash menggunakan konstruktor yang berbeda Hashtable dan menunjukkan perbedaan perilaku tabel hash, bahkan jika masing-masing berisi elemen yang sama.

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

Keterangan

Menentukan kapasitas awal menghilangkan kebutuhan untuk melakukan sejumlah operasi pengubahan ukuran sambil menambahkan elemen ke Hashtable objek. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan berdasarkan faktor beban.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Penyedia kode hash mengeluarkan kode hash untuk kunci di Hashtable. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

Konstruktor ini adalah O(n) operasi, di mana n adalah capacity.

Lihat juga

Berlaku untuk

Hashtable(IEqualityComparer)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal default dan faktor beban, dan objek yang ditentukan 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)

Parameter

equalityComparer
IEqualityComparer

Objek IEqualityComparer yang mendefinisikan penyedia kode hash dan pembanding untuk digunakan dengan Hashtable objek .

-atau-

null untuk menggunakan penyedia kode hash default dan pembanding default. Penyedia kode hash default adalah implementasi GetHashCode() setiap kunci dan pembanding default adalah implementasi setiap kunci dari Equals(Object).

Contoh

Contoh kode berikut membuat tabel hash menggunakan konstruktor yang berbeda Hashtable dan menunjukkan perbedaan perilaku tabel hash, bahkan jika masing-masing berisi elemen yang sama.

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

Keterangan

Kapasitas tabel hash digunakan untuk menghitung jumlah wadah tabel hash yang optimal berdasarkan faktor beban. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Objek IEqualityComparer mencakup penyedia kode hash dan pembanding. IEqualityComparer Jika digunakan dalam Hashtable konstruktor, objek yang digunakan sebagai kunci dalam Hashtable objek tidak diperlukan untuk mengambil Object.GetHashCode alih metode dan Object.Equals .

Penyedia kode hash mengeluarkan kode hash untuk kunci di Hashtable. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

mengaktifkan IEqualityComparer skenario seperti melakukan pencarian dengan string yang tidak peka huruf besar/kecil.

Konstruktor ini adalah O(1) operasi.

Lihat juga

Berlaku untuk

Hashtable(IDictionary)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Menginisialisasi instans Hashtable baru kelas dengan menyalin elemen dari kamus yang ditentukan ke objek baru Hashtable . Objek baru Hashtable memiliki kapasitas awal yang sama dengan jumlah elemen yang disalin, dan menggunakan faktor beban default, penyedia kode hash, dan pembanding.

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)

Parameter

d
IDictionary

Objek IDictionary untuk disalin ke objek baru Hashtable .

Pengecualian

d adalah null.

Contoh

Contoh kode berikut membuat tabel hash menggunakan konstruktor yang berbeda Hashtable dan menunjukkan perbedaan perilaku tabel hash, bahkan jika masing-masing berisi elemen yang sama.

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

Keterangan

Kapasitas awal diatur ke jumlah elemen dalam kamus sumber. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan berdasarkan faktor beban.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Penyedia kode hash mengeluarkan kode hash untuk kunci dalam Hashtable objek. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

Elemen baru Hashtable diurutkan dalam urutan yang sama di mana enumerator melakukan iterasi melalui IDictionary objek.

Konstruktor ini adalah O(n) operasi, di mana n adalah jumlah elemen dalam d parameter .

Lihat juga

Berlaku untuk

Hashtable(Int32, IEqualityComparer)

Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs
Sumber:
Hashtable.cs

Menginisialisasi instans baru yang kosong dari Hashtable kelas menggunakan kapasitas awal yang ditentukan dan IEqualityComparer, dan faktor beban default.

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)

Parameter

capacity
Int32

Perkiraan jumlah elemen yang awalnya dapat dimuat Hashtable objek.

equalityComparer
IEqualityComparer

Objek IEqualityComparer yang mendefinisikan penyedia kode hash dan pembanding untuk digunakan dengan Hashtable.

-atau-

null untuk menggunakan penyedia kode hash default dan pembanding default. Penyedia kode hash default adalah implementasi GetHashCode() setiap kunci dan pembanding default adalah implementasi setiap kunci dari Equals(Object).

Pengecualian

capacity kurang dari nol.

Contoh

Contoh kode berikut membuat tabel hash menggunakan konstruktor yang berbeda Hashtable dan menunjukkan perbedaan perilaku tabel hash, bahkan jika masing-masing berisi elemen yang sama.

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

Keterangan

Menentukan kapasitas awal menghilangkan kebutuhan untuk melakukan sejumlah operasi pengubahan ukuran sambil menambahkan elemen ke Hashtable objek. Kapasitas secara otomatis ditingkatkan sesuai kebutuhan berdasarkan faktor beban.

Faktor beban adalah rasio maksimum elemen terhadap wadah. Faktor beban yang lebih kecil berarti pencarian yang lebih cepat dengan biaya peningkatan konsumsi memori.

Ketika faktor beban aktual mencapai faktor beban yang ditentukan, jumlah wadah secara otomatis ditingkatkan ke angka prima terkecil yang lebih besar dari dua kali jumlah wadah saat ini.

Objek IEqualityComparer mencakup penyedia kode hash dan pembanding. IEqualityComparer Jika digunakan dalam Hashtable konstruktor, objek yang digunakan sebagai kunci dalam Hashtable tidak diperlukan untuk mengambil Object.GetHashCode alih metode dan Object.Equals .

Penyedia kode hash mengeluarkan kode hash untuk kunci di Hashtable. Penyedia kode hash default adalah implementasi kunci dari Object.GetHashCode.

Pembanding menentukan apakah dua kunci sama. Setiap kunci dalam Hashtable harus unik. Pembanding default adalah implementasi kunci dari Object.Equals.

mengaktifkan IEqualityComparer skenario seperti melakukan pencarian dengan string yang tidak peka huruf besar/kecil.

Konstruktor ini adalah O(n) operasi, di mana n adalah capacity parameter .

Lihat juga

Berlaku untuk