Hashtable Constructors
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Initialiseert een nieuw exemplaar van de Hashtable klasse.
Overloads
| Name | Description |
|---|---|
| Hashtable() |
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de standaardinitiële capaciteit, belastingfactor, hashcodeprovider en vergelijkingsfunctie. |
| Hashtable(Int32, Single, IHashCodeProvider, IComparer) |
Verouderd.
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de opgegeven initiële capaciteit, belastingfactor, hashcodeprovider en vergelijkingsfunctie. |
| Hashtable(IDictionary, Single, IHashCodeProvider, IComparer) |
Verouderd.
Initialiseert een nieuw exemplaar van de Hashtable klasse door de elementen uit de opgegeven woordenlijst naar het nieuwe Hashtable object te kopiëren. Het nieuwe Hashtable object heeft een initiële capaciteit die gelijk is aan het aantal gekopieerde elementen en maakt gebruik van de opgegeven belastingfactor, hashcodeprovider en vergelijkingsfunctie. |
| Hashtable(Int32, Single, IEqualityComparer) |
Initialiseert een nieuwe, lege instantie van de klasse met behulp van de opgegeven initiële capaciteit, de laadfactor en het HashtableIEqualityComparer object. |
| Hashtable(Int32, IHashCodeProvider, IComparer) |
Verouderd.
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de opgegeven initiële capaciteit, hashcodeprovider, vergelijking en de standaardbelastingsfactor. |
| Hashtable(IDictionary, Single, IEqualityComparer) |
Initialiseert een nieuw exemplaar van de Hashtable klasse door de elementen uit de opgegeven woordenlijst naar het nieuwe Hashtable object te kopiëren. Het nieuwe Hashtable object heeft een initiële capaciteit die gelijk is aan het aantal gekopieerde elementen en gebruikt de opgegeven belastingsfactor en IEqualityComparer het opgegeven object. |
| Hashtable(IDictionary, IHashCodeProvider, IComparer) |
Verouderd.
Initialiseert een nieuw exemplaar van de Hashtable klasse door de elementen uit de opgegeven woordenlijst naar het nieuwe Hashtable object te kopiëren. Het nieuwe Hashtable object heeft een initiële capaciteit die gelijk is aan het aantal gekopieerde elementen en maakt gebruik van de standaardbelastingsfactor en de opgegeven hashcodeprovider en vergelijkingsfunctie. Deze API is verouderd. Zie voor een alternatief Hashtable(IDictionary, IEqualityComparer). |
| Hashtable(Int32, Single) |
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de opgegeven initiële capaciteit en belastingfactor, en de standaard-hashcodeprovider en vergelijkingsfunctie. |
| Hashtable(SerializationInfo, StreamingContext) |
Initialiseert een nieuwe, lege instantie van de Hashtable klasse die kan worden geserialiseerd met behulp van de opgegeven SerializationInfo objecten.StreamingContext |
| Hashtable(IHashCodeProvider, IComparer) |
Verouderd.
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de standaardinitiële capaciteit en belastingfactor, en de opgegeven hashcodeprovider en vergelijkingsfunctie. |
| Hashtable(IDictionary, Single) |
Initialiseert een nieuw exemplaar van de Hashtable klasse door de elementen uit de opgegeven woordenlijst naar het nieuwe Hashtable object te kopiëren. Het nieuwe Hashtable object heeft een initiële capaciteit die gelijk is aan het aantal gekopieerde elementen en maakt gebruik van de opgegeven belastingfactor en de standaard-hashcodeprovider en vergelijkingsfunctie. |
| Hashtable(IDictionary, IEqualityComparer) |
Initialiseert een nieuw exemplaar van de Hashtable klasse door de elementen uit de opgegeven woordenlijst te kopiëren naar een nieuw Hashtable object. Het nieuwe Hashtable object heeft een initiële capaciteit die gelijk is aan het aantal gekopieerde elementen en gebruikt de standaardbelastingsfactor en het opgegeven IEqualityComparer object. |
| Hashtable(Int32) |
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de opgegeven initiële capaciteit en de standaardbelastingsfactor, hashcodeprovider en vergelijkingsfunctie. |
| Hashtable(IEqualityComparer) |
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de standaardinitiële capaciteit en belastingsfactor en het opgegeven IEqualityComparer object. |
| Hashtable(IDictionary) |
Initialiseert een nieuw exemplaar van de Hashtable klasse door de elementen uit de opgegeven woordenlijst naar het nieuwe Hashtable object te kopiëren. Het nieuwe Hashtable object heeft een initiële capaciteit die gelijk is aan het aantal gekopieerde elementen en maakt gebruik van de standaardbelastingsfactor, hashcodeprovider en vergelijkingsfunctie. |
| Hashtable(Int32, IEqualityComparer) |
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de opgegeven initiële capaciteit en IEqualityCompareren de standaardbelastingsfactor. |
Hashtable()
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de standaardinitiële capaciteit, belastingfactor, hashcodeprovider en vergelijkingsfunctie.
public:
Hashtable();
public Hashtable();
Public Sub New ()
Voorbeelden
In het volgende codevoorbeeld worden hashtabellen gemaakt met behulp van verschillende Hashtable constructors en worden de verschillen in het gedrag van de hash-tabellen gedemonstreerd, zelfs als elke tabel dezelfde elementen bevat.
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
Opmerkingen
De capaciteit van een hash-tabel wordt gebruikt om het optimale aantal hash-tabelbuckets te berekenen op basis van de belastingfactor. Capaciteit wordt automatisch verhoogd naar behoefte.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
De hashcodeprovider dispenseert hash-codes voor sleutels in het Hashtable object. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
Deze constructor is een O(1) bewerking.
Zie ook
Van toepassing op
Hashtable(Int32, Single, IHashCodeProvider, IComparer)
Let op
Please use Hashtable(int, float, IEqualityComparer) instead.
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de opgegeven initiële capaciteit, belastingfactor, hashcodeprovider en vergelijkingsfunctie.
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("Please use Hashtable(int, float, IEqualityComparer) instead.")]
public Hashtable(int capacity, float loadFactor, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
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
Public Sub New (capacity As Integer, loadFactor As Single, hcp As IHashCodeProvider, comparer As IComparer)
Parameters
- capacity
- Int32
Het geschatte aantal elementen dat het Hashtable object in eerste instantie kan bevatten.
- loadFactor
- Single
Een getal in het bereik van 0,1 tot en met 1,0 dat wordt vermenigvuldigd met de standaardwaarde die de beste prestaties biedt. Het resultaat is de maximale verhouding tussen elementen en buckets.
Het IHashCodeProvider object dat de hashcodes levert voor alle sleutels in de Hashtable.
– of –
null om de standaard-hashcodeprovider te gebruiken. Dit is de implementatie van GetHashCode()elke sleutel.
- comparer
- IComparer
Het IComparer object dat moet worden gebruikt om te bepalen of twee sleutels gelijk zijn.
– of –
null om de standaard-vergelijkingsfunctie te gebruiken. Dit is de implementatie van Equals(Object)elke sleutel.
- Kenmerken
Uitzonderingen
capacity is kleiner dan nul.
– of –
loadFactor is kleiner dan 0,1.
– of –
loadFactor is groter dan 1,0.
Opmerkingen
Als u de initiële capaciteit opgeeft, hoeft u niet meer een aantal formaatbewerkingen uit te voeren terwijl u elementen aan het Hashtable object toevoegt. De capaciteit wordt automatisch verhoogd op basis van de belastingfactor.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik. Een belastingfactor van 1,0 is de beste balans tussen snelheid en grootte.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
De hashcodeprovider dispenseert hash-codes voor sleutels in de Hashtable. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
De aangepaste hashcodeprovider en de aangepaste vergelijkingsfunctie maken scenario's mogelijk, zoals het uitvoeren van zoekacties met hoofdlettergevoelige tekenreeksen.
Deze constructor is een O(n) bewerking, waarbij n de capacity parameter zich bevindt.
Zie ook
Van toepassing op
Hashtable(IDictionary, Single, IHashCodeProvider, IComparer)
Let op
Please use Hashtable(IDictionary, float, IEqualityComparer) instead.
Initialiseert een nieuw exemplaar van de Hashtable klasse door de elementen uit de opgegeven woordenlijst naar het nieuwe Hashtable object te kopiëren. Het nieuwe Hashtable object heeft een initiële capaciteit die gelijk is aan het aantal gekopieerde elementen en maakt gebruik van de opgegeven belastingfactor, hashcodeprovider en vergelijkingsfunctie.
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("Please use Hashtable(IDictionary, float, IEqualityComparer) instead.")]
public Hashtable(System.Collections.IDictionary d, float loadFactor, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
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
Public Sub New (d As IDictionary, loadFactor As Single, hcp As IHashCodeProvider, comparer As IComparer)
Parameters
Het IDictionary object dat moet worden gekopieerd naar een nieuw Hashtable object.
- loadFactor
- Single
Een getal in het bereik van 0,1 tot en met 1,0 dat wordt vermenigvuldigd met de standaardwaarde die de beste prestaties biedt. Het resultaat is de maximale verhouding tussen elementen en buckets.
Het IHashCodeProvider object dat de hashcodes levert voor alle sleutels in de Hashtable.
– of –
null om de standaard-hashcodeprovider te gebruiken. Dit is de implementatie van GetHashCode()elke sleutel.
- comparer
- IComparer
Het IComparer object dat moet worden gebruikt om te bepalen of twee sleutels gelijk zijn.
– of –
null om de standaard-vergelijkingsfunctie te gebruiken. Dit is de implementatie van Equals(Object)elke sleutel.
- Kenmerken
Uitzonderingen
d is null.
Opmerkingen
De initiële capaciteit wordt ingesteld op het aantal elementen in de bronwoordenlijst. De capaciteit wordt automatisch verhoogd op basis van de belastingfactor.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik. Een belastingfactor van 1,0 is de beste balans tussen snelheid en grootte.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
De hashcodeprovider dispenseert hash-codes voor sleutels in het Hashtable object. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
De aangepaste hashcodeprovider en de aangepaste vergelijkingsfunctie maken scenario's mogelijk, zoals het uitvoeren van zoekacties met hoofdlettergevoelige tekenreeksen.
De elementen van het nieuwe Hashtable worden gesorteerd in dezelfde volgorde waarin de enumerator het IDictionary object doorloopt.
Deze constructor is een O(n) bewerking, waarbij n het aantal elementen in de d parameter is.
Van toepassing op
Hashtable(Int32, Single, IEqualityComparer)
Initialiseert een nieuwe, lege instantie van de klasse met behulp van de opgegeven initiële capaciteit, de laadfactor en het HashtableIEqualityComparer object.
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)
Parameters
- capacity
- Int32
Het geschatte aantal elementen dat het Hashtable object in eerste instantie kan bevatten.
- loadFactor
- Single
Een getal in het bereik van 0,1 tot en met 1,0 dat wordt vermenigvuldigd met de standaardwaarde die de beste prestaties biedt. Het resultaat is de maximale verhouding tussen elementen en buckets.
- equalityComparer
- IEqualityComparer
Het IEqualityComparer object dat de hashcodeprovider en de vergelijkingsfunctie definieert die moet worden gebruikt met de Hashtable.
– of –
null om de standaard-hashcodeprovider en de standaardvergelijker te gebruiken. De standaard-hashcodeprovider is de implementatie van GetHashCode() elke sleutel en de standaardvergelijker is de implementatie van Equals(Object)elke sleutel.
Uitzonderingen
capacity is kleiner dan nul.
– of –
loadFactor is kleiner dan 0,1.
– of –
loadFactor is groter dan 1,0.
Voorbeelden
In het volgende codevoorbeeld worden hashtabellen gemaakt met behulp van verschillende Hashtable constructors en worden de verschillen in het gedrag van de hash-tabellen gedemonstreerd, zelfs als elke tabel dezelfde elementen bevat.
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
Opmerkingen
Als u de initiële capaciteit opgeeft, hoeft u niet meer een aantal formaatbewerkingen uit te voeren terwijl u elementen aan het Hashtable object toevoegt. De capaciteit wordt automatisch verhoogd op basis van de belastingfactor.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik. Een belastingfactor van 1,0 is de beste balans tussen snelheid en grootte.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
Het IEqualityComparer object bevat zowel de hashcodeprovider als de vergelijkingsfunctie. Als een IEqualityComparer object in de Hashtable constructor wordt gebruikt, zijn de objecten die als sleutels in de Hashtable constructor worden gebruikt, niet vereist om de Object.GetHashCode en Object.Equals methoden te overschrijven.
De hashcodeprovider dispenseert hash-codes voor sleutels in de Hashtable. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
De IEqualityComparer functie maakt scenario's mogelijk, zoals het uitvoeren van zoekopdrachten met hoofdlettergevoelige tekenreeksen.
Deze constructor is een O(n) bewerking, waarbij n de capacity parameter zich bevindt.
Zie ook
Van toepassing op
Hashtable(Int32, IHashCodeProvider, IComparer)
Let op
Please use Hashtable(int, IEqualityComparer) instead.
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de opgegeven initiële capaciteit, hashcodeprovider, vergelijking en de standaardbelastingsfactor.
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("Please use Hashtable(int, IEqualityComparer) instead.")]
public Hashtable(int capacity, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
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
Public Sub New (capacity As Integer, hcp As IHashCodeProvider, comparer As IComparer)
Parameters
- capacity
- Int32
Het geschatte aantal elementen dat het Hashtable object in eerste instantie kan bevatten.
Het IHashCodeProvider object dat de hashcodes levert voor alle sleutels in de Hashtable.
– of –
null om de standaard-hashcodeprovider te gebruiken. Dit is de implementatie van GetHashCode()elke sleutel.
- comparer
- IComparer
Het IComparer object dat moet worden gebruikt om te bepalen of twee sleutels gelijk zijn.
– of –
null om de standaard-vergelijkingsfunctie te gebruiken. Dit is de implementatie van Equals(Object)elke sleutel.
- Kenmerken
Uitzonderingen
capacity is kleiner dan nul.
Opmerkingen
Als u de initiële capaciteit opgeeft, hoeft u niet meer een aantal formaatbewerkingen uit te voeren terwijl u elementen aan het Hashtable object toevoegt. De capaciteit wordt automatisch verhoogd op basis van de belastingfactor.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
De hashcodeprovider dispenseert hash-codes voor sleutels in de Hashtable. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
De aangepaste hashcodeprovider en de aangepaste vergelijkingsfunctie maken scenario's mogelijk, zoals het uitvoeren van zoekacties met hoofdlettergevoelige tekenreeksen.
Deze constructor is een O(n) bewerking, waarbij n de capacity parameter zich bevindt.
Zie ook
Van toepassing op
Hashtable(IDictionary, Single, IEqualityComparer)
Initialiseert een nieuw exemplaar van de Hashtable klasse door de elementen uit de opgegeven woordenlijst naar het nieuwe Hashtable object te kopiëren. Het nieuwe Hashtable object heeft een initiële capaciteit die gelijk is aan het aantal gekopieerde elementen en gebruikt de opgegeven belastingsfactor en IEqualityComparer het opgegeven object.
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)
Parameters
Het IDictionary object dat moet worden gekopieerd naar een nieuw Hashtable object.
- loadFactor
- Single
Een getal in het bereik van 0,1 tot en met 1,0 dat wordt vermenigvuldigd met de standaardwaarde die de beste prestaties biedt. Het resultaat is de maximale verhouding tussen elementen en buckets.
- equalityComparer
- IEqualityComparer
Het IEqualityComparer object dat de hashcodeprovider en de vergelijkingsfunctie definieert die moet worden gebruikt met de Hashtable.
– of –
null om de standaard-hashcodeprovider en de standaardvergelijker te gebruiken. De standaard-hashcodeprovider is de implementatie van GetHashCode() elke sleutel en de standaardvergelijker is de implementatie van Equals(Object)elke sleutel.
Uitzonderingen
d is null.
Voorbeelden
In het volgende codevoorbeeld worden hashtabellen gemaakt met behulp van verschillende Hashtable constructors en worden de verschillen in het gedrag van de hash-tabellen gedemonstreerd, zelfs als elke tabel dezelfde elementen bevat.
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
Opmerkingen
De initiële capaciteit wordt ingesteld op het aantal elementen in de bronwoordenlijst. De capaciteit wordt automatisch verhoogd op basis van de belastingfactor.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik. Een belastingfactor van 1,0 is de beste balans tussen snelheid en grootte.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
Het IEqualityComparer object bevat zowel de hashcodeprovider als de vergelijkingsfunctie. Als een IEqualityComparer object wordt gebruikt in de Hashtable constructor, zijn de objecten die als sleutels in het Hashtable object worden gebruikt, niet vereist om de Object.GetHashCode en Object.Equals methoden te overschrijven.
De hashcodeprovider dispenseert hash-codes voor sleutels in de Hashtable. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
De IEqualityComparer functie maakt scenario's mogelijk, zoals het uitvoeren van zoekopdrachten met hoofdlettergevoelige tekenreeksen.
De elementen van het nieuwe Hashtable worden gesorteerd in dezelfde volgorde waarin de enumerator het IDictionary object doorloopt.
Deze constructor is een O(n) bewerking, waarbij n het aantal elementen in de d parameter is.
Zie ook
Van toepassing op
Hashtable(IDictionary, IHashCodeProvider, IComparer)
Let op
Please use Hashtable(IDictionary, IEqualityComparer) instead.
Initialiseert een nieuw exemplaar van de Hashtable klasse door de elementen uit de opgegeven woordenlijst naar het nieuwe Hashtable object te kopiëren. Het nieuwe Hashtable object heeft een initiële capaciteit die gelijk is aan het aantal gekopieerde elementen en maakt gebruik van de standaardbelastingsfactor en de opgegeven hashcodeprovider en vergelijkingsfunctie. Deze API is verouderd. Zie voor een alternatief Hashtable(IDictionary, IEqualityComparer).
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("Please use Hashtable(IDictionary, IEqualityComparer) instead.")]
public Hashtable(System.Collections.IDictionary d, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
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
Public Sub New (d As IDictionary, hcp As IHashCodeProvider, comparer As IComparer)
Parameters
Het IDictionary object dat moet worden gekopieerd naar een nieuw Hashtable object.
Het IHashCodeProvider object dat de hashcodes levert voor alle sleutels in de Hashtable.
– of –
null om de standaard-hashcodeprovider te gebruiken. Dit is de implementatie van GetHashCode()elke sleutel.
- comparer
- IComparer
Het IComparer object dat moet worden gebruikt om te bepalen of twee sleutels gelijk zijn.
– of –
null om de standaard-vergelijkingsfunctie te gebruiken. Dit is de implementatie van Equals(Object)elke sleutel.
- Kenmerken
Uitzonderingen
d is null.
Opmerkingen
De initiële capaciteit wordt ingesteld op het aantal elementen in de bronwoordenlijst. De capaciteit wordt automatisch verhoogd op basis van de belastingfactor.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
De hashcodeprovider dispenseert hash-codes voor sleutels in het Hashtable object. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
De aangepaste hashcodeprovider en de aangepaste vergelijkingsfunctie maken scenario's mogelijk, zoals het uitvoeren van zoekacties met hoofdlettergevoelige tekenreeksen.
De elementen van het nieuwe Hashtable worden gesorteerd in dezelfde volgorde waarin de enumerator het IDictionary object doorloopt.
Deze constructor is een O(n) bewerking, waarbij n het aantal elementen in de d parameter is.
Zie ook
Van toepassing op
Hashtable(Int32, Single)
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de opgegeven initiële capaciteit en belastingfactor, en de standaard-hashcodeprovider en vergelijkingsfunctie.
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)
Parameters
- capacity
- Int32
Het geschatte aantal elementen dat het Hashtable object in eerste instantie kan bevatten.
- loadFactor
- Single
Een getal in het bereik van 0,1 tot en met 1,0 dat wordt vermenigvuldigd met de standaardwaarde die de beste prestaties biedt. Het resultaat is de maximale verhouding tussen elementen en buckets.
Uitzonderingen
capacity is kleiner dan nul.
– of –
loadFactor is kleiner dan 0,1.
– of –
loadFactor is groter dan 1,0.
capacity veroorzaakt een overloop.
Voorbeelden
In het volgende codevoorbeeld worden hashtabellen gemaakt met behulp van verschillende Hashtable constructors en worden de verschillen in het gedrag van de hash-tabellen gedemonstreerd, zelfs als elke tabel dezelfde elementen bevat.
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
Opmerkingen
Als u de initiële capaciteit opgeeft, hoeft u niet meer een aantal formaatbewerkingen uit te voeren terwijl u elementen aan het Hashtable object toevoegt. De capaciteit wordt automatisch verhoogd op basis van de belastingfactor.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik. Een belastingfactor van 1,0 is de beste balans tussen snelheid en grootte.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
De hashcodeprovider dispenseert hash-codes voor sleutels in de Hashtable. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
Deze constructor is een O(n) bewerking, waarbij n de capacity parameter zich bevindt.
Zie ook
Van toepassing op
Hashtable(SerializationInfo, StreamingContext)
Initialiseert een nieuwe, lege instantie van de Hashtable klasse die kan worden geserialiseerd met behulp van de opgegeven SerializationInfo objecten.StreamingContext
protected:
Hashtable(System::Runtime::Serialization::SerializationInfo ^ info, System::Runtime::Serialization::StreamingContext context);
protected Hashtable(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
new System.Collections.Hashtable : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Collections.Hashtable
Protected Sub New (info As SerializationInfo, context As StreamingContext)
Parameters
- info
- SerializationInfo
Een SerializationInfo object met de informatie die nodig is om het Hashtable object te serialiseren.
- context
- StreamingContext
Een StreamingContext object met de bron en het doel van de geserialiseerde stroom die is gekoppeld aan de Hashtable.
Uitzonderingen
info is null.
Opmerkingen
De capaciteit van een hash-tabel wordt gebruikt om het optimale aantal hash-tabelbuckets te berekenen op basis van de belastingfactor. Capaciteit wordt automatisch verhoogd naar behoefte.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
De hashcodeprovider dispenseert hash-codes voor sleutels in het Hashtable object. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
Deze constructor is een O(n) bewerking, waarbij n .Count
Omdat het serialiseren en deserialiseren van een enumerator voor een Hashtable kan ertoe leiden dat de elementen opnieuw worden gerangschikt, is het niet mogelijk om de opsomming voort te zetten zonder de Reset methode aan te roepen.
Zie ook
- ISerializable
- SerializationInfo
- StreamingContext
- OnDeserialization(Object)
- GetHashCode()
- Equals(Object)
Van toepassing op
Hashtable(IHashCodeProvider, IComparer)
Let op
Please use Hashtable(IEqualityComparer) instead.
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de standaardinitiële capaciteit en belastingfactor, en de opgegeven hashcodeprovider en vergelijkingsfunctie.
public:
Hashtable(System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
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);
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
Public Sub New (hcp As IHashCodeProvider, comparer As IComparer)
Parameters
Het IHashCodeProvider object dat de hash-codes levert voor alle sleutels in het Hashtable object.
– of –
null om de standaard-hashcodeprovider te gebruiken. Dit is de implementatie van GetHashCode()elke sleutel.
- comparer
- IComparer
Het IComparer object dat moet worden gebruikt om te bepalen of twee sleutels gelijk zijn.
– of –
null om de standaard-vergelijkingsfunctie te gebruiken. Dit is de implementatie van Equals(Object)elke sleutel.
- Kenmerken
Opmerkingen
De capaciteit van een hash-tabel wordt gebruikt om het optimale aantal hash-tabelbuckets te berekenen op basis van de belastingfactor. Capaciteit wordt automatisch verhoogd naar behoefte.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
De hashcodeprovider dispenseert hash-codes voor sleutels in het Hashtable object. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
De aangepaste hashcodeprovider en de aangepaste vergelijkingsfunctie maken scenario's mogelijk, zoals het uitvoeren van zoekacties met hoofdlettergevoelige tekenreeksen.
Deze constructor is een O(1) bewerking.
Zie ook
Van toepassing op
Hashtable(IDictionary, Single)
Initialiseert een nieuw exemplaar van de Hashtable klasse door de elementen uit de opgegeven woordenlijst naar het nieuwe Hashtable object te kopiëren. Het nieuwe Hashtable object heeft een initiële capaciteit die gelijk is aan het aantal gekopieerde elementen en maakt gebruik van de opgegeven belastingfactor en de standaard-hashcodeprovider en vergelijkingsfunctie.
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)
Parameters
Het IDictionary object dat moet worden gekopieerd naar een nieuw Hashtable object.
- loadFactor
- Single
Een getal in het bereik van 0,1 tot en met 1,0 dat wordt vermenigvuldigd met de standaardwaarde die de beste prestaties biedt. Het resultaat is de maximale verhouding tussen elementen en buckets.
Uitzonderingen
d is null.
Voorbeelden
In het volgende codevoorbeeld worden hashtabellen gemaakt met behulp van verschillende Hashtable constructors en worden de verschillen in het gedrag van de hash-tabellen gedemonstreerd, zelfs als elke tabel dezelfde elementen bevat.
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
Opmerkingen
De initiële capaciteit wordt ingesteld op het aantal elementen in de bronwoordenlijst. De capaciteit wordt automatisch verhoogd op basis van de belastingfactor.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik. Een belastingfactor van 1,0 is de beste balans tussen snelheid en grootte.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
De hashcodeprovider dispenseert hash-codes voor sleutels in het Hashtable object. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
De elementen van het nieuwe Hashtable worden gesorteerd in dezelfde volgorde waarin de enumerator het IDictionary object doorloopt.
Deze constructor is een O(n) bewerking, waarbij n het aantal elementen in de d parameter is.
Zie ook
Van toepassing op
Hashtable(IDictionary, IEqualityComparer)
Initialiseert een nieuw exemplaar van de Hashtable klasse door de elementen uit de opgegeven woordenlijst te kopiëren naar een nieuw Hashtable object. Het nieuwe Hashtable object heeft een initiële capaciteit die gelijk is aan het aantal gekopieerde elementen en gebruikt de standaardbelastingsfactor en het opgegeven IEqualityComparer object.
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)
Parameters
Het IDictionary object dat moet worden gekopieerd naar een nieuw Hashtable object.
- equalityComparer
- IEqualityComparer
Het IEqualityComparer object dat de hashcodeprovider en de vergelijkingsfunctie definieert die moet worden gebruikt met de Hashtable.
– of –
null om de standaard-hashcodeprovider en de standaardvergelijker te gebruiken. De standaard-hashcodeprovider is de implementatie van GetHashCode() elke sleutel en de standaardvergelijker is de implementatie van Equals(Object)elke sleutel.
Uitzonderingen
d is null.
Voorbeelden
In het volgende codevoorbeeld worden hashtabellen gemaakt met behulp van verschillende Hashtable constructors en worden de verschillen in het gedrag van de hash-tabellen gedemonstreerd, zelfs als elke tabel dezelfde elementen bevat.
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
Opmerkingen
De initiële capaciteit wordt ingesteld op het aantal elementen in de bronwoordenlijst. De capaciteit wordt automatisch verhoogd op basis van de belastingfactor.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
Het IEqualityComparer object bevat zowel de hashcodeprovider als de vergelijkingsfunctie. Als een IEqualityComparer object wordt gebruikt in de Hashtable constructor, zijn de objecten die als sleutels in het Hashtable object worden gebruikt, niet vereist om de Object.GetHashCode en Object.Equals methoden te overschrijven.
De hashcodeprovider dispenseert hash-codes voor sleutels in de Hashtable. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
De IEqualityComparer functie maakt scenario's mogelijk, zoals het uitvoeren van zoekopdrachten met hoofdlettergevoelige tekenreeksen.
De elementen van het nieuwe Hashtable worden gesorteerd in dezelfde volgorde waarin de enumerator het IDictionary object doorloopt.
Deze constructor is een O(n) bewerking, waarbij n het aantal elementen in de d parameter is.
Zie ook
Van toepassing op
Hashtable(Int32)
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de opgegeven initiële capaciteit en de standaardbelastingsfactor, hashcodeprovider en vergelijkingsfunctie.
public:
Hashtable(int capacity);
public Hashtable(int capacity);
new System.Collections.Hashtable : int -> System.Collections.Hashtable
Public Sub New (capacity As Integer)
Parameters
- capacity
- Int32
Het geschatte aantal elementen dat het Hashtable object in eerste instantie kan bevatten.
Uitzonderingen
capacity is kleiner dan nul.
Voorbeelden
In het volgende codevoorbeeld worden hashtabellen gemaakt met behulp van verschillende Hashtable constructors en worden de verschillen in het gedrag van de hash-tabellen gedemonstreerd, zelfs als elke tabel dezelfde elementen bevat.
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
Opmerkingen
Als u de initiële capaciteit opgeeft, hoeft u niet meer een aantal formaatbewerkingen uit te voeren terwijl u elementen aan het Hashtable object toevoegt. De capaciteit wordt automatisch verhoogd op basis van de belastingfactor.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
De hashcodeprovider dispenseert hash-codes voor sleutels in de Hashtable. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
Deze constructor is een O(n) bewerking, waarbij n .capacity
Zie ook
Van toepassing op
Hashtable(IEqualityComparer)
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de standaardinitiële capaciteit en belastingsfactor en het opgegeven IEqualityComparer object.
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)
Parameters
- equalityComparer
- IEqualityComparer
Het IEqualityComparer object dat de hashcodeprovider en de vergelijkingsfunctie definieert die moet worden gebruikt met het Hashtable object.
– of –
null om de standaard-hashcodeprovider en de standaardvergelijker te gebruiken. De standaard-hashcodeprovider is de implementatie van GetHashCode() elke sleutel en de standaardvergelijker is de implementatie van Equals(Object)elke sleutel.
Voorbeelden
In het volgende codevoorbeeld worden hashtabellen gemaakt met behulp van verschillende Hashtable constructors en worden de verschillen in het gedrag van de hash-tabellen gedemonstreerd, zelfs als elke tabel dezelfde elementen bevat.
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
Opmerkingen
De capaciteit van een hash-tabel wordt gebruikt om het optimale aantal hash-tabelbuckets te berekenen op basis van de belastingfactor. Capaciteit wordt automatisch verhoogd naar behoefte.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
Het IEqualityComparer object bevat zowel de hashcodeprovider als de vergelijkingsfunctie. Als een IEqualityComparer object wordt gebruikt in de Hashtable constructor, zijn de objecten die als sleutels in het Hashtable object worden gebruikt, niet vereist om de Object.GetHashCode en Object.Equals methoden te overschrijven.
De hashcodeprovider dispenseert hash-codes voor sleutels in de Hashtable. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
De IEqualityComparer functie maakt scenario's mogelijk, zoals het uitvoeren van zoekopdrachten met hoofdlettergevoelige tekenreeksen.
Deze constructor is een O(1) bewerking.
Zie ook
Van toepassing op
Hashtable(IDictionary)
Initialiseert een nieuw exemplaar van de Hashtable klasse door de elementen uit de opgegeven woordenlijst naar het nieuwe Hashtable object te kopiëren. Het nieuwe Hashtable object heeft een initiële capaciteit die gelijk is aan het aantal gekopieerde elementen en maakt gebruik van de standaardbelastingsfactor, hashcodeprovider en vergelijkingsfunctie.
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)
Parameters
Het IDictionary object dat moet worden gekopieerd naar een nieuw Hashtable object.
Uitzonderingen
d is null.
Voorbeelden
In het volgende codevoorbeeld worden hashtabellen gemaakt met behulp van verschillende Hashtable constructors en worden de verschillen in het gedrag van de hash-tabellen gedemonstreerd, zelfs als elke tabel dezelfde elementen bevat.
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
Opmerkingen
De initiële capaciteit wordt ingesteld op het aantal elementen in de bronwoordenlijst. De capaciteit wordt automatisch verhoogd op basis van de belastingfactor.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
De hashcodeprovider dispenseert hash-codes voor sleutels in het Hashtable object. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
De elementen van het nieuwe Hashtable worden gesorteerd in dezelfde volgorde waarin de enumerator het IDictionary object doorloopt.
Deze constructor is een O(n) bewerking, waarbij n het aantal elementen in de d parameter is.
Zie ook
Van toepassing op
Hashtable(Int32, IEqualityComparer)
Initialiseert een nieuwe, lege instantie van de Hashtable klasse met behulp van de opgegeven initiële capaciteit en IEqualityCompareren de standaardbelastingsfactor.
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)
Parameters
- capacity
- Int32
Het geschatte aantal elementen dat het Hashtable object in eerste instantie kan bevatten.
- equalityComparer
- IEqualityComparer
Het IEqualityComparer object dat de hashcodeprovider en de vergelijkingsfunctie definieert die moet worden gebruikt met de Hashtable.
– of –
null om de standaard-hashcodeprovider en de standaardvergelijker te gebruiken. De standaard-hashcodeprovider is de implementatie van GetHashCode() elke sleutel en de standaardvergelijker is de implementatie van Equals(Object)elke sleutel.
Uitzonderingen
capacity is kleiner dan nul.
Voorbeelden
In het volgende codevoorbeeld worden hashtabellen gemaakt met behulp van verschillende Hashtable constructors en worden de verschillen in het gedrag van de hash-tabellen gedemonstreerd, zelfs als elke tabel dezelfde elementen bevat.
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
Opmerkingen
Als u de initiële capaciteit opgeeft, hoeft u niet meer een aantal formaatbewerkingen uit te voeren terwijl u elementen aan het Hashtable object toevoegt. De capaciteit wordt automatisch verhoogd op basis van de belastingfactor.
De belastingfactor is de maximale verhouding van elementen tot buckets. Een kleinere belastingfactor betekent sneller zoeken naar de kosten van een verhoogd geheugenverbruik.
Wanneer de werkelijke belastingfactor de opgegeven belastingfactor bereikt, wordt het aantal buckets automatisch verhoogd tot het kleinste priemnummer dat groter is dan twee keer het huidige aantal buckets.
Het IEqualityComparer object bevat zowel de hashcodeprovider als de vergelijkingsfunctie. Als een IEqualityComparer object in de Hashtable constructor wordt gebruikt, zijn de objecten die als sleutels in de Hashtable constructor worden gebruikt, niet vereist om de Object.GetHashCode en Object.Equals methoden te overschrijven.
De hashcodeprovider dispenseert hash-codes voor sleutels in de Hashtable. De standaard-hashcodeprovider is de implementatie van de sleutel.Object.GetHashCode
De vergelijkingsfunctie bepaalt of twee sleutels gelijk zijn. Elke sleutel in een Hashtable moet uniek zijn. De standaard comparer is de implementatie van de sleutel.Object.Equals
De IEqualityComparer functie maakt scenario's mogelijk, zoals het uitvoeren van zoekopdrachten met hoofdlettergevoelige tekenreeksen.
Deze constructor is een O(n) bewerking, waarbij n de capacity parameter zich bevindt.