Hashtable Construtores
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Inicializa uma nova instância da classe Hashtable.
Sobrecargas
| Nome | Description |
|---|---|
| Hashtable() |
Inicializa uma nova instância vazia da classe usando a Hashtable capacidade inicial padrão, o fator de carga, o provedor de código de hash e o comparador. |
| Hashtable(Int32, Single, IHashCodeProvider, IComparer) |
Obsoleto.
Obsoleto.
Inicializa uma nova instância vazia da Hashtable classe usando a capacidade inicial, o fator de carga, o provedor de código de hash e o comparador especificados. |
| Hashtable(IDictionary, Single, IHashCodeProvider, IComparer) |
Obsoleto.
Obsoleto.
Inicializa uma nova instância da Hashtable classe copiando os elementos do dicionário especificado para o novo Hashtable objeto. O novo Hashtable objeto tem uma capacidade inicial igual ao número de elementos copiados e usa o fator de carga, o provedor de código de hash e o comparador especificados. |
| Hashtable(Int32, Single, IEqualityComparer) |
Inicializa uma nova instância vazia da Hashtable classe usando a capacidade inicial, o fator de carga e IEqualityComparer o objeto especificados. |
| Hashtable(Int32, IHashCodeProvider, IComparer) |
Obsoleto.
Obsoleto.
Inicializa uma nova instância vazia da Hashtable classe usando a capacidade inicial especificada, o provedor de código de hash, o comparador e o fator de carga padrão. |
| Hashtable(IDictionary, Single, IEqualityComparer) |
Inicializa uma nova instância da Hashtable classe copiando os elementos do dicionário especificado para o novo Hashtable objeto. O novo Hashtable objeto tem uma capacidade inicial igual ao número de elementos copiados e usa o fator de carga e IEqualityComparer o objeto especificados. |
| Hashtable(IDictionary, IHashCodeProvider, IComparer) |
Obsoleto.
Obsoleto.
Inicializa uma nova instância da Hashtable classe copiando os elementos do dicionário especificado para o novo Hashtable objeto. O novo Hashtable objeto tem uma capacidade inicial igual ao número de elementos copiados e usa o fator de carga padrão e o provedor e o comparador de código hash especificados. Essa API está obsoleta. Para obter uma alternativa, consulte Hashtable(IDictionary, IEqualityComparer). |
| Hashtable(Int32, Single) |
Inicializa uma nova instância vazia da Hashtable classe usando a capacidade inicial especificada e o fator de carga e o provedor de código hash padrão e o comparador. |
| Hashtable(SerializationInfo, StreamingContext) |
Obsoleto.
Inicializa uma nova instância vazia da Hashtable classe que é serializável usando os objetos especificadosSerializationInfo.StreamingContext |
| Hashtable(IHashCodeProvider, IComparer) |
Obsoleto.
Obsoleto.
Obsoleto.
Inicializa uma nova instância vazia da Hashtable classe usando a capacidade inicial padrão e o fator de carga e o provedor de código hash e o comparador especificados. |
| Hashtable(IDictionary, Single) |
Inicializa uma nova instância da Hashtable classe copiando os elementos do dicionário especificado para o novo Hashtable objeto. O novo Hashtable objeto tem uma capacidade inicial igual ao número de elementos copiados e usa o fator de carga especificado e o provedor e o comparador de código hash padrão. |
| Hashtable(IDictionary, IEqualityComparer) |
Inicializa uma nova instância da Hashtable classe copiando os elementos do dicionário especificado para um novo Hashtable objeto. O novo Hashtable objeto tem uma capacidade inicial igual ao número de elementos copiados e usa o fator de carga padrão e o objeto especificado IEqualityComparer . |
| Hashtable(Int32) |
Inicializa uma nova instância vazia da classe usando a Hashtable capacidade inicial especificada e o fator de carga padrão, o provedor de código hash e o comparador. |
| Hashtable(IEqualityComparer) |
Inicializa uma nova instância vazia da Hashtable classe usando a capacidade inicial padrão e o fator de carga e o objeto especificado IEqualityComparer . |
| Hashtable(IDictionary) |
Inicializa uma nova instância da Hashtable classe copiando os elementos do dicionário especificado para o novo Hashtable objeto. O novo Hashtable objeto tem uma capacidade inicial igual ao número de elementos copiados e usa o fator de carga padrão, o provedor de código hash e o comparador. |
| Hashtable(Int32, IEqualityComparer) |
Inicializa uma nova instância vazia da classe usando a Hashtable capacidade inicial especificada e IEqualityComparero fator de carga padrão. |
Hashtable()
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Inicializa uma nova instância vazia da classe usando a Hashtable capacidade inicial padrão, o fator de carga, o provedor de código de hash e o comparador.
public:
Hashtable();
public Hashtable();
Public Sub New ()
Exemplos
O exemplo de código a seguir cria tabelas de hash usando construtores diferentes Hashtable e demonstra as diferenças no comportamento das tabelas de hash, mesmo que cada uma contenha os mesmos elementos.
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
Comentários
A capacidade de uma tabela de hash é usada para calcular o número ideal de buckets de tabela de hash com base no fator de carga. A capacidade é automaticamente aumentada conforme necessário.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O provedor de código hash distribui códigos de hash para chaves no Hashtable objeto. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
Este construtor é uma O(1) operação.
Confira também
Aplica-se a
Hashtable(Int32, Single, IHashCodeProvider, IComparer)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Cuidado
This constructor has been deprecated. Use Hashtable(int, float, IEqualityComparer) instead.
Cuidado
Please use Hashtable(int, float, IEqualityComparer) instead.
Inicializa uma nova instância vazia da Hashtable classe usando a capacidade inicial, o fator de carga, o provedor de código de hash e o comparador especificados.
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)
Parâmetros
- loadFactor
- Single
Um número no intervalo de 0,1 a 1,0 multiplicado pelo valor padrão que fornece o melhor desempenho. O resultado é a taxa máxima de elementos para buckets.
O IHashCodeProvider objeto que fornece os códigos de hash para todas as chaves no Hashtable.
- ou -
nullpara usar o provedor de código hash padrão, que é a implementação de cada chave.GetHashCode()
- comparer
- IComparer
O IComparer objeto a ser usado para determinar se duas chaves são iguais.
- ou -
nullpara usar o comparador padrão, que é a implementação de cada chave.Equals(Object)
- Atributos
Exceções
capacity é menor que zero.
- ou -
loadFactor é menor que 0,1.
- ou -
loadFactor é maior que 1,0.
Comentários
Especificar a capacidade inicial elimina a necessidade de executar várias operações de redimensionamento ao adicionar elementos ao Hashtable objeto. A capacidade é automaticamente aumentada conforme necessário com base no fator de carga.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória. Um fator de carga de 1.0 é o melhor equilíbrio entre velocidade e tamanho.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O provedor de código hash distribui códigos de hash para chaves no Hashtable. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
O provedor de código hash personalizado e o comparador personalizado habilitam cenários como fazer pesquisas com cadeias de caracteres que não diferenciam maiúsculas de minúsculas.
Esse construtor é uma O(n) operação, onde n está o capacity parâmetro.
Confira também
Aplica-se a
Hashtable(IDictionary, Single, IHashCodeProvider, IComparer)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Cuidado
This constructor has been deprecated. Use Hashtable(IDictionary, float, IEqualityComparer) instead.
Cuidado
Please use Hashtable(IDictionary, float, IEqualityComparer) instead.
Inicializa uma nova instância da Hashtable classe copiando os elementos do dicionário especificado para o novo Hashtable objeto. O novo Hashtable objeto tem uma capacidade inicial igual ao número de elementos copiados e usa o fator de carga, o provedor de código de hash e o comparador especificados.
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)
Parâmetros
O IDictionary objeto a ser copiado para um novo Hashtable objeto.
- loadFactor
- Single
Um número no intervalo de 0,1 a 1,0 multiplicado pelo valor padrão que fornece o melhor desempenho. O resultado é a taxa máxima de elementos para buckets.
O IHashCodeProvider objeto que fornece os códigos de hash para todas as chaves no Hashtable.
- ou -
nullpara usar o provedor de código hash padrão, que é a implementação de cada chave.GetHashCode()
- comparer
- IComparer
O IComparer objeto a ser usado para determinar se duas chaves são iguais.
- ou -
nullpara usar o comparador padrão, que é a implementação de cada chave.Equals(Object)
- Atributos
Exceções
d é null.
Comentários
A capacidade inicial é definida como o número de elementos no dicionário de origem. A capacidade é automaticamente aumentada conforme necessário com base no fator de carga.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória. Um fator de carga de 1.0 é o melhor equilíbrio entre velocidade e tamanho.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O provedor de código hash distribui códigos de hash para chaves no Hashtable objeto. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
O provedor de código hash personalizado e o comparador personalizado habilitam cenários como fazer pesquisas com cadeias de caracteres que não diferenciam maiúsculas de minúsculas.
Os elementos do novo Hashtable são classificados na mesma ordem em que o enumerador itera por meio do IDictionary objeto.
Esse construtor é uma O(n) operação, onde n está o número de elementos no d parâmetro.
Aplica-se a
Hashtable(Int32, Single, IEqualityComparer)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Inicializa uma nova instância vazia da Hashtable classe usando a capacidade inicial, o fator de carga e IEqualityComparer o objeto especificados.
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)
Parâmetros
- loadFactor
- Single
Um número no intervalo de 0,1 a 1,0 multiplicado pelo valor padrão que fornece o melhor desempenho. O resultado é a taxa máxima de elementos para buckets.
- equalityComparer
- IEqualityComparer
O IEqualityComparer objeto que define o provedor de código hash e o comparador a ser usado com o Hashtable.
- ou -
null para usar o provedor de código hash padrão e o comparador padrão. O provedor de código hash padrão é a implementação de GetHashCode() cada chave e o comparador padrão é a implementação de cada chave.Equals(Object)
Exceções
capacity é menor que zero.
- ou -
loadFactor é menor que 0,1.
- ou -
loadFactor é maior que 1,0.
Exemplos
O exemplo de código a seguir cria tabelas de hash usando construtores diferentes Hashtable e demonstra as diferenças no comportamento das tabelas de hash, mesmo que cada uma contenha os mesmos elementos.
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
Comentários
Especificar a capacidade inicial elimina a necessidade de executar várias operações de redimensionamento ao adicionar elementos ao Hashtable objeto. A capacidade é automaticamente aumentada conforme necessário com base no fator de carga.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória. Um fator de carga de 1.0 é o melhor equilíbrio entre velocidade e tamanho.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O IEqualityComparer objeto inclui o provedor de código hash e o comparador. Se um IEqualityComparer for usado no Hashtable construtor, os objetos usados como chaves no Hashtable não serão necessários para substituir os métodos e Object.GetHashCode os Object.Equals métodos.
O provedor de código hash distribui códigos de hash para chaves no Hashtable. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
O IEqualityComparer habilita cenários como fazer pesquisas com cadeias de caracteres que não diferenciam maiúsculas de minúsculas.
Esse construtor é uma O(n) operação, onde n está o capacity parâmetro.
Confira também
Aplica-se a
Hashtable(Int32, IHashCodeProvider, IComparer)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Cuidado
This constructor has been deprecated. Use Hashtable(int, IEqualityComparer) instead.
Cuidado
Please use Hashtable(int, IEqualityComparer) instead.
Inicializa uma nova instância vazia da Hashtable classe usando a capacidade inicial especificada, o provedor de código de hash, o comparador e o fator de carga padrão.
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)
Parâmetros
O IHashCodeProvider objeto que fornece os códigos de hash para todas as chaves no Hashtable.
- ou -
nullpara usar o provedor de código hash padrão, que é a implementação de cada chave.GetHashCode()
- comparer
- IComparer
O IComparer objeto a ser usado para determinar se duas chaves são iguais.
- ou -
nullpara usar o comparador padrão, que é a implementação de cada chave.Equals(Object)
- Atributos
Exceções
capacity é menor que zero.
Comentários
Especificar a capacidade inicial elimina a necessidade de executar várias operações de redimensionamento ao adicionar elementos ao Hashtable objeto. A capacidade é automaticamente aumentada conforme necessário com base no fator de carga.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O provedor de código hash distribui códigos de hash para chaves no Hashtable. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
O provedor de código hash personalizado e o comparador personalizado habilitam cenários como fazer pesquisas com cadeias de caracteres que não diferenciam maiúsculas de minúsculas.
Esse construtor é uma O(n) operação, onde n está o capacity parâmetro.
Confira também
Aplica-se a
Hashtable(IDictionary, Single, IEqualityComparer)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Inicializa uma nova instância da Hashtable classe copiando os elementos do dicionário especificado para o novo Hashtable objeto. O novo Hashtable objeto tem uma capacidade inicial igual ao número de elementos copiados e usa o fator de carga e IEqualityComparer o objeto especificados.
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)
Parâmetros
O IDictionary objeto a ser copiado para um novo Hashtable objeto.
- loadFactor
- Single
Um número no intervalo de 0,1 a 1,0 multiplicado pelo valor padrão que fornece o melhor desempenho. O resultado é a taxa máxima de elementos para buckets.
- equalityComparer
- IEqualityComparer
O IEqualityComparer objeto que define o provedor de código hash e o comparador a ser usado com o Hashtable.
- ou -
null para usar o provedor de código hash padrão e o comparador padrão. O provedor de código hash padrão é a implementação de GetHashCode() cada chave e o comparador padrão é a implementação de cada chave.Equals(Object)
Exceções
d é null.
Exemplos
O exemplo de código a seguir cria tabelas de hash usando construtores diferentes Hashtable e demonstra as diferenças no comportamento das tabelas de hash, mesmo que cada uma contenha os mesmos elementos.
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
Comentários
A capacidade inicial é definida como o número de elementos no dicionário de origem. A capacidade é automaticamente aumentada conforme necessário com base no fator de carga.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória. Um fator de carga de 1.0 é o melhor equilíbrio entre velocidade e tamanho.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O IEqualityComparer objeto inclui o provedor de código hash e o comparador. Se um IEqualityComparer for usado no Hashtable construtor, os objetos usados como chaves no Hashtable objeto não serão necessários para substituir os métodos e Object.GetHashCode os Object.Equals métodos.
O provedor de código hash distribui códigos de hash para chaves no Hashtable. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
O IEqualityComparer habilita cenários como fazer pesquisas com cadeias de caracteres que não diferenciam maiúsculas de minúsculas.
Os elementos do novo Hashtable são classificados na mesma ordem em que o enumerador itera por meio do IDictionary objeto.
Esse construtor é uma O(n) operação, onde n está o número de elementos no d parâmetro.
Confira também
Aplica-se a
Hashtable(IDictionary, IHashCodeProvider, IComparer)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Cuidado
This constructor has been deprecated. Use Hashtable(IDictionary, IEqualityComparer) instead.
Cuidado
Please use Hashtable(IDictionary, IEqualityComparer) instead.
Inicializa uma nova instância da Hashtable classe copiando os elementos do dicionário especificado para o novo Hashtable objeto. O novo Hashtable objeto tem uma capacidade inicial igual ao número de elementos copiados e usa o fator de carga padrão e o provedor e o comparador de código hash especificados. Essa API está obsoleta. Para obter uma alternativa, consulte 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)
Parâmetros
O IDictionary objeto a ser copiado para um novo Hashtable objeto.
O IHashCodeProvider objeto que fornece os códigos de hash para todas as chaves no Hashtable.
- ou -
nullpara usar o provedor de código hash padrão, que é a implementação de cada chave.GetHashCode()
- comparer
- IComparer
O IComparer objeto a ser usado para determinar se duas chaves são iguais.
- ou -
nullpara usar o comparador padrão, que é a implementação de cada chave.Equals(Object)
- Atributos
Exceções
d é null.
Comentários
A capacidade inicial é definida como o número de elementos no dicionário de origem. A capacidade é automaticamente aumentada conforme necessário com base no fator de carga.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O provedor de código hash distribui códigos de hash para chaves no Hashtable objeto. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
O provedor de código hash personalizado e o comparador personalizado habilitam cenários como fazer pesquisas com cadeias de caracteres que não diferenciam maiúsculas de minúsculas.
Os elementos do novo Hashtable são classificados na mesma ordem em que o enumerador itera por meio do IDictionary objeto.
Esse construtor é uma O(n) operação, onde n está o número de elementos no d parâmetro.
Confira também
Aplica-se a
Hashtable(Int32, Single)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Inicializa uma nova instância vazia da Hashtable classe usando a capacidade inicial especificada e o fator de carga e o provedor de código hash padrão e o comparador.
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)
Parâmetros
- loadFactor
- Single
Um número no intervalo de 0,1 a 1,0 multiplicado pelo valor padrão que fornece o melhor desempenho. O resultado é a taxa máxima de elementos para buckets.
Exceções
capacity é menor que zero.
- ou -
loadFactor é menor que 0,1.
- ou -
loadFactor é maior que 1,0.
capacity está causando um estouro.
Exemplos
O exemplo de código a seguir cria tabelas de hash usando construtores diferentes Hashtable e demonstra as diferenças no comportamento das tabelas de hash, mesmo que cada uma contenha os mesmos elementos.
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
Comentários
Especificar a capacidade inicial elimina a necessidade de executar várias operações de redimensionamento ao adicionar elementos ao Hashtable objeto. A capacidade é automaticamente aumentada conforme necessário com base no fator de carga.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória. Um fator de carga de 1.0 é o melhor equilíbrio entre velocidade e tamanho.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O provedor de código hash distribui códigos de hash para chaves no Hashtable. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
Esse construtor é uma O(n) operação, onde n está o capacity parâmetro.
Confira também
Aplica-se a
Hashtable(SerializationInfo, StreamingContext)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Cuidado
This API supports obsolete formatter-based serialization. It should not be called or extended by application code.
Inicializa uma nova instância vazia da Hashtable classe que é serializável usando os objetos especificadosSerializationInfo.StreamingContext
protected:
Hashtable(System::Runtime::Serialization::SerializationInfo ^ info, System::Runtime::Serialization::StreamingContext context);
[System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
protected Hashtable(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
protected Hashtable(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
[<System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
new System.Collections.Hashtable : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Collections.Hashtable
new System.Collections.Hashtable : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Collections.Hashtable
Protected Sub New (info As SerializationInfo, context As StreamingContext)
Parâmetros
- info
- SerializationInfo
Um SerializationInfo objeto que contém as informações necessárias para serializar o Hashtable objeto.
- context
- StreamingContext
Um StreamingContext objeto que contém a origem e o destino do fluxo serializado associado ao Hashtable.
- Atributos
Exceções
info é null.
Comentários
A capacidade de uma tabela de hash é usada para calcular o número ideal de buckets de tabela de hash com base no fator de carga. A capacidade é automaticamente aumentada conforme necessário.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O provedor de código hash distribui códigos de hash para chaves no Hashtable objeto. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
Esse construtor é uma O(n) operação, onde n está Count.
Como serializar e desserializar um enumerador para um Hashtable pode fazer com que os elementos sejam reordenados, não é possível continuar a enumeração sem chamar o Reset método.
Confira também
- ISerializable
- SerializationInfo
- StreamingContext
- OnDeserialization(Object)
- GetHashCode()
- Equals(Object)
Aplica-se a
Hashtable(IHashCodeProvider, IComparer)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Cuidado
This constructor has been deprecated. Use Hashtable(IEqualityComparer) instead.
Cuidado
Please use Hashtable(IEqualityComparer) instead.
Cuidado
This constructor has been deprecated. Use Hashtable(IEqualityComparer).
Inicializa uma nova instância vazia da Hashtable classe usando a capacidade inicial padrão e o fator de carga e o provedor de código hash e o comparador especificados.
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)
Parâmetros
O IHashCodeProvider objeto que fornece os códigos de hash para todas as chaves no Hashtable objeto.
- ou -
nullpara usar o provedor de código hash padrão, que é a implementação de cada chave.GetHashCode()
- comparer
- IComparer
O IComparer objeto a ser usado para determinar se duas chaves são iguais.
- ou -
nullpara usar o comparador padrão, que é a implementação de cada chave.Equals(Object)
- Atributos
Comentários
A capacidade de uma tabela de hash é usada para calcular o número ideal de buckets de tabela de hash com base no fator de carga. A capacidade é automaticamente aumentada conforme necessário.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O provedor de código hash distribui códigos de hash para chaves no Hashtable objeto. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
O provedor de código hash personalizado e o comparador personalizado habilitam cenários como fazer pesquisas com cadeias de caracteres que não diferenciam maiúsculas de minúsculas.
Este construtor é uma O(1) operação.
Confira também
Aplica-se a
Hashtable(IDictionary, Single)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Inicializa uma nova instância da Hashtable classe copiando os elementos do dicionário especificado para o novo Hashtable objeto. O novo Hashtable objeto tem uma capacidade inicial igual ao número de elementos copiados e usa o fator de carga especificado e o provedor e o comparador de código hash padrão.
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)
Parâmetros
O IDictionary objeto a ser copiado para um novo Hashtable objeto.
- loadFactor
- Single
Um número no intervalo de 0,1 a 1,0 multiplicado pelo valor padrão que fornece o melhor desempenho. O resultado é a taxa máxima de elementos para buckets.
Exceções
d é null.
Exemplos
O exemplo de código a seguir cria tabelas de hash usando construtores diferentes Hashtable e demonstra as diferenças no comportamento das tabelas de hash, mesmo que cada uma contenha os mesmos elementos.
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
Comentários
A capacidade inicial é definida como o número de elementos no dicionário de origem. A capacidade é automaticamente aumentada conforme necessário com base no fator de carga.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória. Um fator de carga de 1.0 é o melhor equilíbrio entre velocidade e tamanho.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O provedor de código hash distribui códigos de hash para chaves no Hashtable objeto. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
Os elementos do novo Hashtable são classificados na mesma ordem em que o enumerador itera por meio do IDictionary objeto.
Esse construtor é uma O(n) operação, onde n está o número de elementos no d parâmetro.
Confira também
Aplica-se a
Hashtable(IDictionary, IEqualityComparer)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Inicializa uma nova instância da Hashtable classe copiando os elementos do dicionário especificado para um novo Hashtable objeto. O novo Hashtable objeto tem uma capacidade inicial igual ao número de elementos copiados e usa o fator de carga padrão e o objeto especificado 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)
Parâmetros
O IDictionary objeto a ser copiado para um novo Hashtable objeto.
- equalityComparer
- IEqualityComparer
O IEqualityComparer objeto que define o provedor de código hash e o comparador a ser usado com o Hashtable.
- ou -
null para usar o provedor de código hash padrão e o comparador padrão. O provedor de código hash padrão é a implementação de GetHashCode() cada chave e o comparador padrão é a implementação de cada chave.Equals(Object)
Exceções
d é null.
Exemplos
O exemplo de código a seguir cria tabelas de hash usando construtores diferentes Hashtable e demonstra as diferenças no comportamento das tabelas de hash, mesmo que cada uma contenha os mesmos elementos.
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
Comentários
A capacidade inicial é definida como o número de elementos no dicionário de origem. A capacidade é automaticamente aumentada conforme necessário com base no fator de carga.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O IEqualityComparer objeto inclui o provedor de código hash e o comparador. Se um IEqualityComparer for usado no Hashtable construtor, os objetos usados como chaves no Hashtable objeto não serão necessários para substituir os métodos e Object.GetHashCode os Object.Equals métodos.
O provedor de código hash distribui códigos de hash para chaves no Hashtable. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
O IEqualityComparer habilita cenários como fazer pesquisas com cadeias de caracteres que não diferenciam maiúsculas de minúsculas.
Os elementos do novo Hashtable são classificados na mesma ordem em que o enumerador itera por meio do IDictionary objeto.
Esse construtor é uma O(n) operação, onde n está o número de elementos no d parâmetro.
Confira também
Aplica-se a
Hashtable(Int32)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Inicializa uma nova instância vazia da classe usando a Hashtable capacidade inicial especificada e o fator de carga padrão, o provedor de código hash e o comparador.
public:
Hashtable(int capacity);
public Hashtable(int capacity);
new System.Collections.Hashtable : int -> System.Collections.Hashtable
Public Sub New (capacity As Integer)
Parâmetros
Exceções
capacity é menor que zero.
Exemplos
O exemplo de código a seguir cria tabelas de hash usando construtores diferentes Hashtable e demonstra as diferenças no comportamento das tabelas de hash, mesmo que cada uma contenha os mesmos elementos.
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
Comentários
Especificar a capacidade inicial elimina a necessidade de executar várias operações de redimensionamento ao adicionar elementos ao Hashtable objeto. A capacidade é automaticamente aumentada conforme necessário com base no fator de carga.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O provedor de código hash distribui códigos de hash para chaves no Hashtable. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
Esse construtor é uma O(n) operação, onde n está capacity.
Confira também
Aplica-se a
Hashtable(IEqualityComparer)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Inicializa uma nova instância vazia da Hashtable classe usando a capacidade inicial padrão e o fator de carga e o objeto especificado 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)
Parâmetros
- equalityComparer
- IEqualityComparer
O IEqualityComparer objeto que define o provedor de código hash e o comparador a ser usado com o Hashtable objeto.
- ou -
null para usar o provedor de código hash padrão e o comparador padrão. O provedor de código hash padrão é a implementação de GetHashCode() cada chave e o comparador padrão é a implementação de cada chave.Equals(Object)
Exemplos
O exemplo de código a seguir cria tabelas de hash usando construtores diferentes Hashtable e demonstra as diferenças no comportamento das tabelas de hash, mesmo que cada uma contenha os mesmos elementos.
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
Comentários
A capacidade de uma tabela de hash é usada para calcular o número ideal de buckets de tabela de hash com base no fator de carga. A capacidade é automaticamente aumentada conforme necessário.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O IEqualityComparer objeto inclui o provedor de código hash e o comparador. Se um IEqualityComparer for usado no Hashtable construtor, os objetos usados como chaves no Hashtable objeto não serão necessários para substituir os métodos e Object.GetHashCode os Object.Equals métodos.
O provedor de código hash distribui códigos de hash para chaves no Hashtable. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
O IEqualityComparer habilita cenários como fazer pesquisas com cadeias de caracteres que não diferenciam maiúsculas de minúsculas.
Este construtor é uma O(1) operação.
Confira também
Aplica-se a
Hashtable(IDictionary)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
public:
Hashtable(System::Collections::IDictionary ^ d);
public Hashtable(System.Collections.IDictionary d);
new System.Collections.Hashtable : System.Collections.IDictionary -> System.Collections.Hashtable
Public Sub New (d As IDictionary)
Parâmetros
O IDictionary objeto a ser copiado para um novo Hashtable objeto.
Exceções
d é null.
Exemplos
O exemplo de código a seguir cria tabelas de hash usando construtores diferentes Hashtable e demonstra as diferenças no comportamento das tabelas de hash, mesmo que cada uma contenha os mesmos elementos.
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
Comentários
A capacidade inicial é definida como o número de elementos no dicionário de origem. A capacidade é automaticamente aumentada conforme necessário com base no fator de carga.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O provedor de código hash distribui códigos de hash para chaves no Hashtable objeto. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
Os elementos do novo Hashtable são classificados na mesma ordem em que o enumerador itera por meio do IDictionary objeto.
Esse construtor é uma O(n) operação, onde n está o número de elementos no d parâmetro.
Confira também
Aplica-se a
Hashtable(Int32, IEqualityComparer)
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
- Origem:
- Hashtable.cs
Inicializa uma nova instância vazia da classe usando a Hashtable capacidade inicial especificada e IEqualityComparero fator de carga padrão.
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)
Parâmetros
- equalityComparer
- IEqualityComparer
O IEqualityComparer objeto que define o provedor de código hash e o comparador a ser usado com o Hashtable.
- ou -
null para usar o provedor de código hash padrão e o comparador padrão. O provedor de código hash padrão é a implementação de GetHashCode() cada chave e o comparador padrão é a implementação de cada chave.Equals(Object)
Exceções
capacity é menor que zero.
Exemplos
O exemplo de código a seguir cria tabelas de hash usando construtores diferentes Hashtable e demonstra as diferenças no comportamento das tabelas de hash, mesmo que cada uma contenha os mesmos elementos.
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
Comentários
Especificar a capacidade inicial elimina a necessidade de executar várias operações de redimensionamento ao adicionar elementos ao Hashtable objeto. A capacidade é automaticamente aumentada conforme necessário com base no fator de carga.
O fator de carga é a taxa máxima de elementos para buckets. Um fator de carga menor significa uma pesquisa mais rápida ao custo do aumento do consumo de memória.
Quando o fator de carga real atinge o fator de carga especificado, o número de buckets é automaticamente aumentado para o menor número primo que é maior que o dobro do número atual de buckets.
O IEqualityComparer objeto inclui o provedor de código hash e o comparador. Se um IEqualityComparer for usado no Hashtable construtor, os objetos usados como chaves no Hashtable não serão necessários para substituir os métodos e Object.GetHashCode os Object.Equals métodos.
O provedor de código hash distribui códigos de hash para chaves no Hashtable. O provedor de código hash padrão é a implementação da chave de Object.GetHashCode.
O comparador determina se duas chaves são iguais. Cada chave em uma Hashtable deve ser exclusiva. O comparador padrão é a implementação da chave de Object.Equals.
O IEqualityComparer habilita cenários como fazer pesquisas com cadeias de caracteres que não diferenciam maiúsculas de minúsculas.
Esse construtor é uma O(n) operação, onde n está o capacity parâmetro.