Hashtable 생성자
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
Hashtable 클래스의 새 인스턴스를 초기화합니다.
오버로드
| Name | Description |
|---|---|
| Hashtable() |
기본 초기 용량, 로드 팩터, 해시 코드 공급자 및 비교자를 사용하여 클래스의 Hashtable 빈 새 인스턴스를 초기화합니다. |
| Hashtable(Int32, Single, IHashCodeProvider, IComparer) |
사용되지 않음.
지정된 초기 용량, 로드 팩터, 해시 코드 공급자 및 비교자를 사용하여 클래스의 Hashtable 빈 새 인스턴스를 초기화합니다. |
| Hashtable(IDictionary, Single, IHashCodeProvider, IComparer) |
사용되지 않음.
지정된 사전의 Hashtable 요소를 새 개체로 복사하여 클래스의 새 Hashtable 인스턴스를 초기화합니다. 새 Hashtable 개체는 복사된 요소 수와 동일한 초기 용량을 가지며 지정된 로드 팩터, 해시 코드 공급자 및 비교자를 사용합니다. |
| Hashtable(Int32, Single, IEqualityComparer) |
지정된 초기 용량, 로드 팩터 및 개체를 Hashtable 사용하여 클래스의 비어 있는 새 인스턴스를 IEqualityComparer 초기화합니다. |
| Hashtable(Int32, IHashCodeProvider, IComparer) |
사용되지 않음.
지정된 초기 용량, 해시 코드 공급자, 비교자 및 기본 부하 요소를 사용하여 클래스의 Hashtable 빈 새 인스턴스를 초기화합니다. |
| Hashtable(IDictionary, Single, IEqualityComparer) |
지정된 사전의 Hashtable 요소를 새 개체로 복사하여 클래스의 새 Hashtable 인스턴스를 초기화합니다. 새 Hashtable 개체는 복사된 요소 수와 동일한 초기 용량을 가지며 지정된 로드 팩터 및 IEqualityComparer 개체를 사용합니다. |
| Hashtable(IDictionary, IHashCodeProvider, IComparer) |
사용되지 않음.
지정된 사전의 Hashtable 요소를 새 개체로 복사하여 클래스의 새 Hashtable 인스턴스를 초기화합니다. 새 Hashtable 개체는 복사된 요소 수와 동일한 초기 용량을 가지며 기본 로드 팩터와 지정된 해시 코드 공급자 및 비교자를 사용합니다. 이 API는 사용되지 않습니다. 대안은 다음을 참조하세요 Hashtable(IDictionary, IEqualityComparer). |
| Hashtable(Int32, Single) |
지정된 초기 용량 및 로드 팩터와 기본 해시 코드 공급자 및 비교자를 사용하여 클래스의 Hashtable 비어 있는 새 인스턴스를 초기화합니다. |
| Hashtable(SerializationInfo, StreamingContext) |
지정된 개체와 Hashtable 개체를 사용하여 직렬화할 수 있는 클래스의 SerializationInfo 빈 새 인스턴스를 StreamingContext 초기화합니다. |
| Hashtable(IHashCodeProvider, IComparer) |
사용되지 않음.
기본 초기 용량 및 로드 팩터 및 지정된 해시 코드 공급자 및 비교자를 사용하여 클래스의 Hashtable 비어 있는 새 인스턴스를 초기화합니다. |
| Hashtable(IDictionary, Single) |
지정된 사전의 Hashtable 요소를 새 개체로 복사하여 클래스의 새 Hashtable 인스턴스를 초기화합니다. 새 Hashtable 개체는 복사된 요소 수와 동일한 초기 용량을 가지며 지정된 로드 팩터와 기본 해시 코드 공급자 및 비교자를 사용합니다. |
| Hashtable(IDictionary, IEqualityComparer) |
지정된 사전의 Hashtable 요소를 새 개체로 복사하여 클래스의 새 Hashtable 인스턴스를 초기화합니다. 새 Hashtable 개체의 초기 용량은 복사된 요소 수와 같으며 기본 로드 팩터와 지정된 IEqualityComparer 개체를 사용합니다. |
| Hashtable(Int32) |
지정된 초기 용량 및 기본 로드 팩터, 해시 코드 공급자 및 비교자를 사용하여 클래스의 Hashtable 비어 있는 새 인스턴스를 초기화합니다. |
| Hashtable(IEqualityComparer) |
기본 초기 용량 및 로드 팩터 및 지정된 IEqualityComparer 개체를 사용하여 클래스의 Hashtable 비어 있는 새 인스턴스를 초기화합니다. |
| Hashtable(IDictionary) |
지정된 사전의 Hashtable 요소를 새 개체로 복사하여 클래스의 새 Hashtable 인스턴스를 초기화합니다. 새 Hashtable 개체는 복사된 요소 수와 동일한 초기 용량을 가지며 기본 로드 팩터, 해시 코드 공급자 및 비교자를 사용합니다. |
| Hashtable(Int32, IEqualityComparer) |
지정된 초기 용량 및 IEqualityComparer기본 로드 팩터를 Hashtable 사용하여 클래스의 비어 있는 새 인스턴스를 초기화합니다. |
Hashtable()
기본 초기 용량, 로드 팩터, 해시 코드 공급자 및 비교자를 사용하여 클래스의 Hashtable 빈 새 인스턴스를 초기화합니다.
public:
Hashtable();
public Hashtable();
Public Sub New ()
예제
다음 코드 예제에서는 서로 다른 Hashtable 생성자를 사용 하 여 해시 테이블을 만들고 각각 동일한 요소를 포함 하는 경우에 해시 테이블의 동작의 차이점을 보여 줍니다.
using System;
using System.Collections;
using System.Globalization;
class myComparer : IEqualityComparer
{
public new bool Equals(object x, object y)
{
return x.Equals(y);
}
public int GetHashCode(object obj)
{
return obj.ToString().ToLower().GetHashCode();
}
}
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
return myComparer.Compare(x, y) == 0;
}
public int GetHashCode(object obj)
{
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create a hash table using the default comparer.
var myHT1 = new Hashtable();
myHT1.Add("FIRST", "Hello");
myHT1.Add("SECOND", "World");
myHT1.Add("THIRD", "!");
// Create a hash table using the specified IEqualityComparer that uses
// the default Object.Equals to determine equality.
var myHT2 = new Hashtable(new myComparer());
myHT2.Add("FIRST", "Hello");
myHT2.Add("SECOND", "World");
myHT2.Add("THIRD", "!");
// Create a hash table using a case-insensitive hash code provider and
// case-insensitive comparer based on the InvariantCulture.
Hashtable myHT3 = new Hashtable(
CaseInsensitiveHashCodeProvider.DefaultInvariant,
CaseInsensitiveComparer.DefaultInvariant);
myHT3.Add("FIRST", "Hello");
myHT3.Add("SECOND", "World");
myHT3.Add("THIRD", "!");
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
var myCul = new CultureInfo("tr-TR");
var myHT4 = new Hashtable(new myCultureComparer(myCul));
myHT4.Add("FIRST", "Hello");
myHT4.Add("SECOND", "World");
myHT4.Add("THIRD", "!");
// Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}");
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}");
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}");
Console.WriteLine($"first is in myHT4: {myHT4.ContainsKey("first")}");
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: False
first is in myHT3: True
first is in myHT4: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myComparer
Implements IEqualityComparer
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
Return x.Equals(y)
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
Return myComparer.Compare(x, y) = 0
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable()
myHT1.Add("FIRST", "Hello")
myHT1.Add("SECOND", "World")
myHT1.Add("THIRD", "!")
' Create a hash table using the specified IEqualityComparer that uses
' the default Object.Equals to determine equality.
Dim myHT2 As New Hashtable(New myComparer())
myHT2.Add("FIRST", "Hello")
myHT2.Add("SECOND", "World")
myHT2.Add("THIRD", "!")
' Create a hash table using a case-insensitive hash code provider and
' case-insensitive comparer based on the InvariantCulture.
Dim myHT3 As New Hashtable( _
CaseInsensitiveHashCodeProvider.DefaultInvariant, _
CaseInsensitiveComparer.DefaultInvariant)
myHT3.Add("FIRST", "Hello")
myHT3.Add("SECOND", "World")
myHT3.Add("THIRD", "!")
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT4 As New Hashtable(New myCultureComparer(myCul))
myHT4.Add("FIRST", "Hello")
myHT4.Add("SECOND", "World")
myHT4.Add("THIRD", "!")
' Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}")
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}")
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}")
Console.WriteLine($"first is in myHT4: {myHT4.ContainsKey("first")}")
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'first is in myHT1: False
'first is in myHT2: False
'first is in myHT3: True
'first is in myHT4: False
설명
해시 테이블의 용량은 부하 요인에 따라 최적의 해시 테이블 버킷 수를 계산하는 데 사용됩니다. 필요에 따라 용량이 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
해시 코드 공급자는 개체의 키 Hashtable 에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
이 생성자는 작업입니다 O(1) .
추가 정보
적용 대상
Hashtable(Int32, Single, IHashCodeProvider, IComparer)
주의
Please use Hashtable(int, float, IEqualityComparer) instead.
지정된 초기 용량, 로드 팩터, 해시 코드 공급자 및 비교자를 사용하여 클래스의 Hashtable 빈 새 인스턴스를 초기화합니다.
public:
Hashtable(int capacity, float loadFactor, System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
public Hashtable(int capacity, float loadFactor, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
[System.Obsolete("Please use Hashtable(int, float, IEqualityComparer) instead.")]
public Hashtable(int capacity, float loadFactor, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
new System.Collections.Hashtable : int * single * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(int, float, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : int * single * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (capacity As Integer, loadFactor As Single, hcp As IHashCodeProvider, comparer As IComparer)
매개 변수
- loadFactor
- Single
0.1에서 1.0까지의 범위에서 최상의 성능을 제공하는 기본값을 곱한 숫자입니다. 결과는 버킷에 대한 요소의 최대 비율입니다.
의 IHashCodeProvider 모든 키 Hashtable에 대한 해시 코드를 제공하는 개체입니다.
-또는-
null 각 키의 구현 GetHashCode()인 기본 해시 코드 공급자를 사용합니다.
- comparer
- IComparer
IComparer 두 키가 같은지 여부를 확인하는 데 사용할 개체입니다.
-또는-
null 각 키의 구현 Equals(Object)인 기본 비교자를 사용합니다.
- 특성
예외
capacity가 0보다 작습니다.
-또는-
loadFactor 가 0.1보다 작습니다.
-또는-
loadFactor 가 1.0보다 큰 경우
설명
초기 용량을 지정하면 개체에 요소를 Hashtable 추가하는 동안 많은 크기 조정 작업을 수행할 필요가 없습니다. 용량은 부하 요인에 따라 필요에 따라 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다. 1.0의 부하 요소는 속도와 크기 사이의 최상의 균형입니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
해시 코드 공급자는 .의 Hashtable키에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
사용자 지정 해시 코드 공급자 및 사용자 지정 비교자를 사용하면 대/소문자를 구분하지 않는 문자열을 사용하여 조회를 수행하는 등의 시나리오를 사용할 수 있습니다.
이 생성자는 매개 변수인 O(n)n 작업입니다 capacity .
추가 정보
적용 대상
Hashtable(IDictionary, Single, IHashCodeProvider, IComparer)
주의
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("Please use Hashtable(IDictionary, float, IEqualityComparer) instead.")]
public Hashtable(System.Collections.IDictionary d, float loadFactor, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
new System.Collections.Hashtable : System.Collections.IDictionary * single * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(IDictionary, float, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : System.Collections.IDictionary * single * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (d As IDictionary, loadFactor As Single, hcp As IHashCodeProvider, comparer As IComparer)
매개 변수
IDictionary 새 Hashtable 개체에 복사할 개체입니다.
- loadFactor
- Single
0.1에서 1.0까지의 범위에서 최상의 성능을 제공하는 기본값을 곱한 숫자입니다. 결과는 버킷에 대한 요소의 최대 비율입니다.
의 IHashCodeProvider 모든 키 Hashtable에 대한 해시 코드를 제공하는 개체입니다.
-또는-
null 각 키의 구현 GetHashCode()인 기본 해시 코드 공급자를 사용합니다.
- comparer
- IComparer
IComparer 두 키가 같은지 여부를 확인하는 데 사용할 개체입니다.
-또는-
null 각 키의 구현 Equals(Object)인 기본 비교자를 사용합니다.
- 특성
예외
d은 null입니다.
설명
초기 용량은 원본 사전의 요소 수로 설정됩니다. 용량은 부하 요인에 따라 필요에 따라 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다. 1.0의 부하 요소는 속도와 크기 사이의 최상의 균형입니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
해시 코드 공급자는 개체의 키 Hashtable 에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
사용자 지정 해시 코드 공급자 및 사용자 지정 비교자를 사용하면 대/소문자를 구분하지 않는 문자열을 사용하여 조회를 수행하는 등의 시나리오를 사용할 수 있습니다.
새 Hashtable 요소는 열거자가 개체를 반복하는 순서와 동일한 순서로 정렬됩니다 IDictionary .
이 생성자는 O(n) 매개 변수의 요소 d 수가 있는 n 작업입니다.
적용 대상
Hashtable(Int32, Single, IEqualityComparer)
지정된 초기 용량, 로드 팩터 및 개체를 Hashtable 사용하여 클래스의 비어 있는 새 인스턴스를 IEqualityComparer 초기화합니다.
public:
Hashtable(int capacity, float loadFactor, System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(int capacity, float loadFactor, System.Collections.IEqualityComparer equalityComparer);
new System.Collections.Hashtable : int * single * System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (capacity As Integer, loadFactor As Single, equalityComparer As IEqualityComparer)
매개 변수
- loadFactor
- Single
0.1에서 1.0까지의 범위에서 최상의 성능을 제공하는 기본값을 곱한 숫자입니다. 결과는 버킷에 대한 요소의 최대 비율입니다.
- equalityComparer
- IEqualityComparer
IEqualityComparer 해시 코드 공급자와 함께 사용할 비교자를 정의하는 개체입니다Hashtable.
-또는-
null 기본 해시 코드 공급자와 기본 비교자를 사용합니다. 기본 해시 코드 공급자는 각 키의 구현 GetHashCode() 이며 기본 비교자는 각 키의 구현입니다 Equals(Object).
예외
capacity가 0보다 작습니다.
-또는-
loadFactor 가 0.1보다 작습니다.
-또는-
loadFactor 가 1.0보다 큰 경우
예제
다음 코드 예제에서는 서로 다른 Hashtable 생성자를 사용 하 여 해시 테이블을 만들고 각각 동일한 요소를 포함 하는 경우에 해시 테이블의 동작의 차이점을 보여 줍니다.
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
if (myComparer.Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create a hash table using the default comparer.
Hashtable myHT1 = new Hashtable(3, .8f);
myHT1.Add("FIRST", "Hello");
myHT1.Add("SECOND", "World");
myHT1.Add("THIRD", "!");
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Hashtable myHT2 = new Hashtable(3, .8f, new myCultureComparer());
myHT2.Add("FIRST", "Hello");
myHT2.Add("SECOND", "World");
myHT2.Add("THIRD", "!");
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
CultureInfo myCul = new CultureInfo("tr-TR");
Hashtable myHT3 = new Hashtable(3, .8f, new myCultureComparer(myCul));
myHT3.Add("FIRST", "Hello");
myHT3.Add("SECOND", "World");
myHT3.Add("THIRD", "!");
// Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"));
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"));
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"));
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
If (myComparer.Compare(x, y) = 0) Then
Return True
Else
Return False
End If
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(3, System.Convert.ToSingle(0.8))
myHT1.Add("FIRST", "Hello")
myHT1.Add("SECOND", "World")
myHT1.Add("THIRD", "!")
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(3, System.Convert.ToSingle(0.8), _
New myCultureComparer())
myHT2.Add("FIRST", "Hello")
myHT2.Add("SECOND", "World")
myHT2.Add("THIRD", "!")
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(3, System.Convert.ToSingle(0.8), _
New myCultureComparer(myCul))
myHT3.Add("FIRST", "Hello")
myHT3.Add("SECOND", "World")
myHT3.Add("THIRD", "!")
' Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"))
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"))
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"))
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
설명
초기 용량을 지정하면 개체에 요소를 Hashtable 추가하는 동안 많은 크기 조정 작업을 수행할 필요가 없습니다. 용량은 부하 요인에 따라 필요에 따라 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다. 1.0의 부하 요소는 속도와 크기 사이의 최상의 균형입니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
개체에는 IEqualityComparer 해시 코드 공급자와 비교자가 모두 포함됩니다. IEqualityComparer 생성자에서 Hashtable 사용되는 경우 키 Hashtable 로 사용되는 개체는 해당 개체와 Object.Equals 메서드를 재정의 Object.GetHashCode 할 필요가 없습니다.
해시 코드 공급자는 .의 Hashtable키에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
대 IEqualityComparer /소문자를 구분하지 않는 문자열을 사용하여 조회를 수행하는 등의 시나리오를 사용할 수 있습니다.
이 생성자는 매개 변수인 O(n)n 작업입니다 capacity .
추가 정보
적용 대상
Hashtable(Int32, IHashCodeProvider, IComparer)
주의
Please use Hashtable(int, IEqualityComparer) instead.
지정된 초기 용량, 해시 코드 공급자, 비교자 및 기본 부하 요소를 사용하여 클래스의 Hashtable 빈 새 인스턴스를 초기화합니다.
public:
Hashtable(int capacity, System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
public Hashtable(int capacity, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
[System.Obsolete("Please use Hashtable(int, IEqualityComparer) instead.")]
public Hashtable(int capacity, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
new System.Collections.Hashtable : int * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(int, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : int * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (capacity As Integer, hcp As IHashCodeProvider, comparer As IComparer)
매개 변수
의 IHashCodeProvider 모든 키 Hashtable에 대한 해시 코드를 제공하는 개체입니다.
-또는-
null 각 키의 구현 GetHashCode()인 기본 해시 코드 공급자를 사용합니다.
- comparer
- IComparer
IComparer 두 키가 같은지 여부를 확인하는 데 사용할 개체입니다.
-또는-
null 각 키의 구현 Equals(Object)인 기본 비교자를 사용합니다.
- 특성
예외
capacity가 0보다 작습니다.
설명
초기 용량을 지정하면 개체에 요소를 Hashtable 추가하는 동안 많은 크기 조정 작업을 수행할 필요가 없습니다. 용량은 부하 요인에 따라 필요에 따라 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
해시 코드 공급자는 .의 Hashtable키에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
사용자 지정 해시 코드 공급자 및 사용자 지정 비교자를 사용하면 대/소문자를 구분하지 않는 문자열을 사용하여 조회를 수행하는 등의 시나리오를 사용할 수 있습니다.
이 생성자는 매개 변수인 O(n)n 작업입니다 capacity .
추가 정보
적용 대상
Hashtable(IDictionary, Single, IEqualityComparer)
지정된 사전의 Hashtable 요소를 새 개체로 복사하여 클래스의 새 Hashtable 인스턴스를 초기화합니다. 새 Hashtable 개체는 복사된 요소 수와 동일한 초기 용량을 가지며 지정된 로드 팩터 및 IEqualityComparer 개체를 사용합니다.
public:
Hashtable(System::Collections::IDictionary ^ d, float loadFactor, System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(System.Collections.IDictionary d, float loadFactor, System.Collections.IEqualityComparer equalityComparer);
new System.Collections.Hashtable : System.Collections.IDictionary * single * System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (d As IDictionary, loadFactor As Single, equalityComparer As IEqualityComparer)
매개 변수
IDictionary 새 Hashtable 개체에 복사할 개체입니다.
- loadFactor
- Single
0.1에서 1.0까지의 범위에서 최상의 성능을 제공하는 기본값을 곱한 숫자입니다. 결과는 버킷에 대한 요소의 최대 비율입니다.
- equalityComparer
- IEqualityComparer
IEqualityComparer 해시 코드 공급자와 함께 사용할 비교자를 정의하는 개체입니다Hashtable.
-또는-
null 기본 해시 코드 공급자와 기본 비교자를 사용합니다. 기본 해시 코드 공급자는 각 키의 구현 GetHashCode() 이며 기본 비교자는 각 키의 구현입니다 Equals(Object).
예외
d은 null입니다.
예제
다음 코드 예제에서는 서로 다른 Hashtable 생성자를 사용 하 여 해시 테이블을 만들고 각각 동일한 요소를 포함 하는 경우에 해시 테이블의 동작의 차이점을 보여 줍니다.
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
if (myComparer.Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create the dictionary.
SortedList mySL = new SortedList();
mySL.Add("FIRST", "Hello");
mySL.Add("SECOND", "World");
mySL.Add("THIRD", "!");
// Create a hash table using the default comparer.
Hashtable myHT1 = new Hashtable(mySL, .8f);
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Hashtable myHT2 = new Hashtable(mySL, .8f,
new myCultureComparer());
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
CultureInfo myCul = new CultureInfo("tr-TR");
Hashtable myHT3 = new Hashtable(mySL, .8f, new myCultureComparer(myCul));
// Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"));
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"));
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"));
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
If (myComparer.Compare(x, y) = 0) Then
Return True
Else
Return False
End If
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create the dictionary.
Dim mySL As New SortedList()
mySL.Add("FIRST", "Hello")
mySL.Add("SECOND", "World")
mySL.Add("THIRD", "!")
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(mySL, System.Convert.ToSingle(0.8))
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(mySL, System.Convert.ToSingle(0.8), _
New myCultureComparer())
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(mySL, System.Convert.ToSingle(0.8), _
New myCultureComparer(myCul))
' Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"))
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"))
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"))
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
설명
초기 용량은 원본 사전의 요소 수로 설정됩니다. 용량은 부하 요인에 따라 필요에 따라 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다. 1.0의 부하 요소는 속도와 크기 사이의 최상의 균형입니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
개체에는 IEqualityComparer 해시 코드 공급자와 비교자가 모두 포함됩니다. IEqualityComparer 생성자에서 Hashtable 사용되는 경우 개체의 키 Hashtable 로 사용되는 개체는 해당 개체와 Object.Equals 메서드를 재정의 Object.GetHashCode 할 필요가 없습니다.
해시 코드 공급자는 .의 Hashtable키에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
대 IEqualityComparer /소문자를 구분하지 않는 문자열을 사용하여 조회를 수행하는 등의 시나리오를 사용할 수 있습니다.
새 Hashtable 요소는 열거자가 개체를 반복하는 순서와 동일한 순서로 정렬됩니다 IDictionary .
이 생성자는 O(n) 매개 변수의 요소 d 수가 있는 n 작업입니다.
추가 정보
적용 대상
Hashtable(IDictionary, IHashCodeProvider, IComparer)
주의
Please use Hashtable(IDictionary, IEqualityComparer) instead.
지정된 사전의 Hashtable 요소를 새 개체로 복사하여 클래스의 새 Hashtable 인스턴스를 초기화합니다. 새 Hashtable 개체는 복사된 요소 수와 동일한 초기 용량을 가지며 기본 로드 팩터와 지정된 해시 코드 공급자 및 비교자를 사용합니다. 이 API는 사용되지 않습니다. 대안은 다음을 참조하세요 Hashtable(IDictionary, IEqualityComparer).
public:
Hashtable(System::Collections::IDictionary ^ d, System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
public Hashtable(System.Collections.IDictionary d, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
[System.Obsolete("Please use Hashtable(IDictionary, IEqualityComparer) instead.")]
public Hashtable(System.Collections.IDictionary d, System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
new System.Collections.Hashtable : System.Collections.IDictionary * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(IDictionary, IEqualityComparer) instead.")>]
new System.Collections.Hashtable : System.Collections.IDictionary * System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (d As IDictionary, hcp As IHashCodeProvider, comparer As IComparer)
매개 변수
IDictionary 새 Hashtable 개체에 복사할 개체입니다.
의 IHashCodeProvider 모든 키 Hashtable에 대한 해시 코드를 제공하는 개체입니다.
-또는-
null 각 키의 구현 GetHashCode()인 기본 해시 코드 공급자를 사용합니다.
- comparer
- IComparer
IComparer 두 키가 같은지 여부를 확인하는 데 사용할 개체입니다.
-또는-
null 각 키의 구현 Equals(Object)인 기본 비교자를 사용합니다.
- 특성
예외
d은 null입니다.
설명
초기 용량은 원본 사전의 요소 수로 설정됩니다. 용량은 부하 요인에 따라 필요에 따라 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
해시 코드 공급자는 개체의 키 Hashtable 에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
사용자 지정 해시 코드 공급자 및 사용자 지정 비교자를 사용하면 대/소문자를 구분하지 않는 문자열을 사용하여 조회를 수행하는 등의 시나리오를 사용할 수 있습니다.
새 Hashtable 요소는 열거자가 개체를 반복하는 순서와 동일한 순서로 정렬됩니다 IDictionary .
이 생성자는 O(n) 매개 변수의 요소 d 수가 있는 n 작업입니다.
추가 정보
적용 대상
Hashtable(Int32, Single)
지정된 초기 용량 및 로드 팩터와 기본 해시 코드 공급자 및 비교자를 사용하여 클래스의 Hashtable 비어 있는 새 인스턴스를 초기화합니다.
public:
Hashtable(int capacity, float loadFactor);
public Hashtable(int capacity, float loadFactor);
new System.Collections.Hashtable : int * single -> System.Collections.Hashtable
Public Sub New (capacity As Integer, loadFactor As Single)
매개 변수
- loadFactor
- Single
0.1에서 1.0까지의 범위에서 최상의 성능을 제공하는 기본값을 곱한 숫자입니다. 결과는 버킷에 대한 요소의 최대 비율입니다.
예외
capacity가 0보다 작습니다.
-또는-
loadFactor 가 0.1보다 작습니다.
-또는-
loadFactor 가 1.0보다 큰 경우
capacity 가 오버플로를 발생시키는 경우
예제
다음 코드 예제에서는 서로 다른 Hashtable 생성자를 사용 하 여 해시 테이블을 만들고 각각 동일한 요소를 포함 하는 경우에 해시 테이블의 동작의 차이점을 보여 줍니다.
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
if (myComparer.Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create a hash table using the default comparer.
Hashtable myHT1 = new Hashtable(3, .8f);
myHT1.Add("FIRST", "Hello");
myHT1.Add("SECOND", "World");
myHT1.Add("THIRD", "!");
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Hashtable myHT2 = new Hashtable(3, .8f, new myCultureComparer());
myHT2.Add("FIRST", "Hello");
myHT2.Add("SECOND", "World");
myHT2.Add("THIRD", "!");
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
CultureInfo myCul = new CultureInfo("tr-TR");
Hashtable myHT3 = new Hashtable(3, .8f, new myCultureComparer(myCul));
myHT3.Add("FIRST", "Hello");
myHT3.Add("SECOND", "World");
myHT3.Add("THIRD", "!");
// Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"));
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"));
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"));
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
If (myComparer.Compare(x, y) = 0) Then
Return True
Else
Return False
End If
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(3, System.Convert.ToSingle(0.8))
myHT1.Add("FIRST", "Hello")
myHT1.Add("SECOND", "World")
myHT1.Add("THIRD", "!")
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(3, System.Convert.ToSingle(0.8), _
New myCultureComparer())
myHT2.Add("FIRST", "Hello")
myHT2.Add("SECOND", "World")
myHT2.Add("THIRD", "!")
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(3, System.Convert.ToSingle(0.8), _
New myCultureComparer(myCul))
myHT3.Add("FIRST", "Hello")
myHT3.Add("SECOND", "World")
myHT3.Add("THIRD", "!")
' Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"))
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"))
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"))
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
설명
초기 용량을 지정하면 개체에 요소를 Hashtable 추가하는 동안 많은 크기 조정 작업을 수행할 필요가 없습니다. 용량은 부하 요인에 따라 필요에 따라 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다. 1.0의 부하 요소는 속도와 크기 사이의 최상의 균형입니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
해시 코드 공급자는 .의 Hashtable키에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
이 생성자는 매개 변수인 O(n)n 작업입니다 capacity .
추가 정보
적용 대상
Hashtable(SerializationInfo, StreamingContext)
지정된 개체와 Hashtable 개체를 사용하여 직렬화할 수 있는 클래스의 SerializationInfo 빈 새 인스턴스를 StreamingContext 초기화합니다.
protected:
Hashtable(System::Runtime::Serialization::SerializationInfo ^ info, System::Runtime::Serialization::StreamingContext context);
protected Hashtable(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
new System.Collections.Hashtable : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Collections.Hashtable
Protected Sub New (info As SerializationInfo, context As StreamingContext)
매개 변수
- info
- SerializationInfo
SerializationInfo 개체를 serialize하는 데 필요한 정보를 포함하는 개체입니다Hashtable.
- context
- StreamingContext
StreamingContext 와 연결된 serialize된 스트림의 원본 및 대상을 Hashtable포함하는 개체입니다.
예외
info은 null입니다.
설명
해시 테이블의 용량은 부하 요인에 따라 최적의 해시 테이블 버킷 수를 계산하는 데 사용됩니다. 필요에 따라 용량이 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
해시 코드 공급자는 개체의 키 Hashtable 에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
이 생성자는 O(n) 작업입니다 nCount.
열거자를 Hashtable 직렬화 및 역직렬화하면 요소의 순서가 다시 지정될 수 있으므로 메서드를 호출 Reset 하지 않고는 열거를 계속할 수 없습니다.
추가 정보
- ISerializable
- SerializationInfo
- StreamingContext
- OnDeserialization(Object)
- GetHashCode()
- Equals(Object)
적용 대상
Hashtable(IHashCodeProvider, IComparer)
주의
Please use Hashtable(IEqualityComparer) instead.
기본 초기 용량 및 로드 팩터 및 지정된 해시 코드 공급자 및 비교자를 사용하여 클래스의 Hashtable 비어 있는 새 인스턴스를 초기화합니다.
public:
Hashtable(System::Collections::IHashCodeProvider ^ hcp, System::Collections::IComparer ^ comparer);
public Hashtable(System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
[System.Obsolete("Please use Hashtable(IEqualityComparer) instead.")]
public Hashtable(System.Collections.IHashCodeProvider hcp, System.Collections.IComparer comparer);
new System.Collections.Hashtable : System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
[<System.Obsolete("Please use Hashtable(IEqualityComparer) instead.")>]
new System.Collections.Hashtable : System.Collections.IHashCodeProvider * System.Collections.IComparer -> System.Collections.Hashtable
Public Sub New (hcp As IHashCodeProvider, comparer As IComparer)
매개 변수
IHashCodeProvider 개체의 모든 키 Hashtable 에 대한 해시 코드를 제공하는 개체입니다.
-또는-
null 각 키의 구현 GetHashCode()인 기본 해시 코드 공급자를 사용합니다.
- comparer
- IComparer
IComparer 두 키가 같은지 여부를 확인하는 데 사용할 개체입니다.
-또는-
null 각 키의 구현 Equals(Object)인 기본 비교자를 사용합니다.
- 특성
설명
해시 테이블의 용량은 부하 요인에 따라 최적의 해시 테이블 버킷 수를 계산하는 데 사용됩니다. 필요에 따라 용량이 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
해시 코드 공급자는 개체의 키 Hashtable 에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
사용자 지정 해시 코드 공급자 및 사용자 지정 비교자를 사용하면 대/소문자를 구분하지 않는 문자열을 사용하여 조회를 수행하는 등의 시나리오를 사용할 수 있습니다.
이 생성자는 작업입니다 O(1) .
추가 정보
적용 대상
Hashtable(IDictionary, Single)
public:
Hashtable(System::Collections::IDictionary ^ d, float loadFactor);
public Hashtable(System.Collections.IDictionary d, float loadFactor);
new System.Collections.Hashtable : System.Collections.IDictionary * single -> System.Collections.Hashtable
Public Sub New (d As IDictionary, loadFactor As Single)
매개 변수
IDictionary 새 Hashtable 개체에 복사할 개체입니다.
- loadFactor
- Single
0.1에서 1.0까지의 범위에서 최상의 성능을 제공하는 기본값을 곱한 숫자입니다. 결과는 버킷에 대한 요소의 최대 비율입니다.
예외
d은 null입니다.
예제
다음 코드 예제에서는 서로 다른 Hashtable 생성자를 사용 하 여 해시 테이블을 만들고 각각 동일한 요소를 포함 하는 경우에 해시 테이블의 동작의 차이점을 보여 줍니다.
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
if (myComparer.Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create the dictionary.
SortedList mySL = new SortedList();
mySL.Add("FIRST", "Hello");
mySL.Add("SECOND", "World");
mySL.Add("THIRD", "!");
// Create a hash table using the default comparer.
Hashtable myHT1 = new Hashtable(mySL, .8f);
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Hashtable myHT2 = new Hashtable(mySL, .8f,
new myCultureComparer());
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
CultureInfo myCul = new CultureInfo("tr-TR");
Hashtable myHT3 = new Hashtable(mySL, .8f, new myCultureComparer(myCul));
// Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"));
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"));
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"));
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
If (myComparer.Compare(x, y) = 0) Then
Return True
Else
Return False
End If
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create the dictionary.
Dim mySL As New SortedList()
mySL.Add("FIRST", "Hello")
mySL.Add("SECOND", "World")
mySL.Add("THIRD", "!")
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(mySL, System.Convert.ToSingle(0.8))
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(mySL, System.Convert.ToSingle(0.8), _
New myCultureComparer())
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(mySL, System.Convert.ToSingle(0.8), _
New myCultureComparer(myCul))
' Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"))
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"))
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"))
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
설명
초기 용량은 원본 사전의 요소 수로 설정됩니다. 용량은 부하 요인에 따라 필요에 따라 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다. 1.0의 부하 요소는 속도와 크기 사이의 최상의 균형입니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
해시 코드 공급자는 개체의 키 Hashtable 에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
새 Hashtable 요소는 열거자가 개체를 반복하는 순서와 동일한 순서로 정렬됩니다 IDictionary .
이 생성자는 O(n) 매개 변수의 요소 d 수가 있는 n 작업입니다.
추가 정보
적용 대상
Hashtable(IDictionary, IEqualityComparer)
지정된 사전의 Hashtable 요소를 새 개체로 복사하여 클래스의 새 Hashtable 인스턴스를 초기화합니다. 새 Hashtable 개체의 초기 용량은 복사된 요소 수와 같으며 기본 로드 팩터와 지정된 IEqualityComparer 개체를 사용합니다.
public:
Hashtable(System::Collections::IDictionary ^ d, System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(System.Collections.IDictionary d, System.Collections.IEqualityComparer equalityComparer);
new System.Collections.Hashtable : System.Collections.IDictionary * System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (d As IDictionary, equalityComparer As IEqualityComparer)
매개 변수
IDictionary 새 Hashtable 개체에 복사할 개체입니다.
- equalityComparer
- IEqualityComparer
IEqualityComparer 해시 코드 공급자와 함께 사용할 비교자를 정의하는 개체입니다Hashtable.
-또는-
null 기본 해시 코드 공급자와 기본 비교자를 사용합니다. 기본 해시 코드 공급자는 각 키의 구현 GetHashCode() 이며 기본 비교자는 각 키의 구현입니다 Equals(Object).
예외
d은 null입니다.
예제
다음 코드 예제에서는 서로 다른 Hashtable 생성자를 사용 하 여 해시 테이블을 만들고 각각 동일한 요소를 포함 하는 경우에 해시 테이블의 동작의 차이점을 보여 줍니다.
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
return myComparer.Compare(x, y) == 0;
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create the dictionary.
var mySL = new SortedList();
mySL.Add("FIRST", "Hello");
mySL.Add("SECOND", "World");
mySL.Add("THIRD", "!");
// Create a hash table using the default comparer.
var myHT1 = new Hashtable(mySL);
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
var myHT2 = new Hashtable(mySL, new myCultureComparer());
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
var myCul = new CultureInfo("tr-TR");
var myHT3 = new Hashtable(mySL, new myCultureComparer(myCul));
// Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}");
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}");
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}");
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
Return myComparer.Compare(x, y) = 0
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create the dictionary.
Dim mySL As New SortedList()
mySL.Add("FIRST", "Hello")
mySL.Add("SECOND", "World")
mySL.Add("THIRD", "!")
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(mySL)
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(mySL, New myCultureComparer())
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(mySL, New myCultureComparer(myCul))
' Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}")
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}")
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}")
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
설명
초기 용량은 원본 사전의 요소 수로 설정됩니다. 용량은 부하 요인에 따라 필요에 따라 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
개체에는 IEqualityComparer 해시 코드 공급자와 비교자가 모두 포함됩니다. IEqualityComparer 생성자에서 Hashtable 사용되는 경우 개체의 키 Hashtable 로 사용되는 개체는 해당 개체와 Object.Equals 메서드를 재정의 Object.GetHashCode 할 필요가 없습니다.
해시 코드 공급자는 .의 Hashtable키에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
대 IEqualityComparer /소문자를 구분하지 않는 문자열을 사용하여 조회를 수행하는 등의 시나리오를 사용할 수 있습니다.
새 Hashtable 요소는 열거자가 개체를 반복하는 순서와 동일한 순서로 정렬됩니다 IDictionary .
이 생성자는 O(n) 매개 변수의 요소 d 수가 있는 n 작업입니다.
추가 정보
적용 대상
Hashtable(Int32)
지정된 초기 용량 및 기본 로드 팩터, 해시 코드 공급자 및 비교자를 사용하여 클래스의 Hashtable 비어 있는 새 인스턴스를 초기화합니다.
public:
Hashtable(int capacity);
public Hashtable(int capacity);
new System.Collections.Hashtable : int -> System.Collections.Hashtable
Public Sub New (capacity As Integer)
매개 변수
예외
capacity가 0보다 작습니다.
예제
다음 코드 예제에서는 서로 다른 Hashtable 생성자를 사용 하 여 해시 테이블을 만들고 각각 동일한 요소를 포함 하는 경우에 해시 테이블의 동작의 차이점을 보여 줍니다.
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
if (myComparer.Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create a hash table using the default comparer.
Hashtable myHT1 = new Hashtable(3);
myHT1.Add("FIRST", "Hello");
myHT1.Add("SECOND", "World");
myHT1.Add("THIRD", "!");
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Hashtable myHT2 = new Hashtable(3, new myCultureComparer());
myHT2.Add("FIRST", "Hello");
myHT2.Add("SECOND", "World");
myHT2.Add("THIRD", "!");
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
CultureInfo myCul = new CultureInfo("tr-TR");
Hashtable myHT3 = new Hashtable(3, new myCultureComparer(myCul));
myHT3.Add("FIRST", "Hello");
myHT3.Add("SECOND", "World");
myHT3.Add("THIRD", "!");
// Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"));
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"));
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"));
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
If (myComparer.Compare(x, y) = 0) Then
Return True
Else
Return False
End If
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(3)
myHT1.Add("FIRST", "Hello")
myHT1.Add("SECOND", "World")
myHT1.Add("THIRD", "!")
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(3, New myCultureComparer())
myHT2.Add("FIRST", "Hello")
myHT2.Add("SECOND", "World")
myHT2.Add("THIRD", "!")
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(3, New myCultureComparer(myCul))
myHT3.Add("FIRST", "Hello")
myHT3.Add("SECOND", "World")
myHT3.Add("THIRD", "!")
' Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"))
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"))
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"))
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
설명
초기 용량을 지정하면 개체에 요소를 Hashtable 추가하는 동안 많은 크기 조정 작업을 수행할 필요가 없습니다. 용량은 부하 요인에 따라 필요에 따라 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
해시 코드 공급자는 .의 Hashtable키에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
이 생성자는 O(n) 작업입니다 ncapacity.
추가 정보
적용 대상
Hashtable(IEqualityComparer)
기본 초기 용량 및 로드 팩터 및 지정된 IEqualityComparer 개체를 사용하여 클래스의 Hashtable 비어 있는 새 인스턴스를 초기화합니다.
public:
Hashtable(System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(System.Collections.IEqualityComparer equalityComparer);
new System.Collections.Hashtable : System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (equalityComparer As IEqualityComparer)
매개 변수
- equalityComparer
- IEqualityComparer
IEqualityComparer 개체와 함께 Hashtable 사용할 해시 코드 공급자 및 비교자를 정의하는 개체입니다.
-또는-
null 기본 해시 코드 공급자와 기본 비교자를 사용합니다. 기본 해시 코드 공급자는 각 키의 구현 GetHashCode() 이며 기본 비교자는 각 키의 구현입니다 Equals(Object).
예제
다음 코드 예제에서는 서로 다른 Hashtable 생성자를 사용 하 여 해시 테이블을 만들고 각각 동일한 요소를 포함 하는 경우에 해시 테이블의 동작의 차이점을 보여 줍니다.
using System;
using System.Collections;
using System.Globalization;
class myComparer : IEqualityComparer
{
public new bool Equals(object x, object y)
{
return x.Equals(y);
}
public int GetHashCode(object obj)
{
return obj.ToString().ToLower().GetHashCode();
}
}
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
return myComparer.Compare(x, y) == 0;
}
public int GetHashCode(object obj)
{
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create a hash table using the default comparer.
var myHT1 = new Hashtable();
myHT1.Add("FIRST", "Hello");
myHT1.Add("SECOND", "World");
myHT1.Add("THIRD", "!");
// Create a hash table using the specified IEqualityComparer that uses
// the default Object.Equals to determine equality.
var myHT2 = new Hashtable(new myComparer());
myHT2.Add("FIRST", "Hello");
myHT2.Add("SECOND", "World");
myHT2.Add("THIRD", "!");
// Create a hash table using a case-insensitive hash code provider and
// case-insensitive comparer based on the InvariantCulture.
Hashtable myHT3 = new Hashtable(
CaseInsensitiveHashCodeProvider.DefaultInvariant,
CaseInsensitiveComparer.DefaultInvariant);
myHT3.Add("FIRST", "Hello");
myHT3.Add("SECOND", "World");
myHT3.Add("THIRD", "!");
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
var myCul = new CultureInfo("tr-TR");
var myHT4 = new Hashtable(new myCultureComparer(myCul));
myHT4.Add("FIRST", "Hello");
myHT4.Add("SECOND", "World");
myHT4.Add("THIRD", "!");
// Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}");
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}");
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}");
Console.WriteLine($"first is in myHT4: {myHT4.ContainsKey("first")}");
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: False
first is in myHT3: True
first is in myHT4: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myComparer
Implements IEqualityComparer
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
Return x.Equals(y)
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
Return myComparer.Compare(x, y) = 0
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable()
myHT1.Add("FIRST", "Hello")
myHT1.Add("SECOND", "World")
myHT1.Add("THIRD", "!")
' Create a hash table using the specified IEqualityComparer that uses
' the default Object.Equals to determine equality.
Dim myHT2 As New Hashtable(New myComparer())
myHT2.Add("FIRST", "Hello")
myHT2.Add("SECOND", "World")
myHT2.Add("THIRD", "!")
' Create a hash table using a case-insensitive hash code provider and
' case-insensitive comparer based on the InvariantCulture.
Dim myHT3 As New Hashtable( _
CaseInsensitiveHashCodeProvider.DefaultInvariant, _
CaseInsensitiveComparer.DefaultInvariant)
myHT3.Add("FIRST", "Hello")
myHT3.Add("SECOND", "World")
myHT3.Add("THIRD", "!")
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT4 As New Hashtable(New myCultureComparer(myCul))
myHT4.Add("FIRST", "Hello")
myHT4.Add("SECOND", "World")
myHT4.Add("THIRD", "!")
' Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}")
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}")
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}")
Console.WriteLine($"first is in myHT4: {myHT4.ContainsKey("first")}")
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'first is in myHT1: False
'first is in myHT2: False
'first is in myHT3: True
'first is in myHT4: False
설명
해시 테이블의 용량은 부하 요인에 따라 최적의 해시 테이블 버킷 수를 계산하는 데 사용됩니다. 필요에 따라 용량이 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
개체에는 IEqualityComparer 해시 코드 공급자와 비교자가 모두 포함됩니다. IEqualityComparer 생성자에서 Hashtable 사용되는 경우 개체의 키 Hashtable 로 사용되는 개체는 해당 개체와 Object.Equals 메서드를 재정의 Object.GetHashCode 할 필요가 없습니다.
해시 코드 공급자는 .의 Hashtable키에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
대 IEqualityComparer /소문자를 구분하지 않는 문자열을 사용하여 조회를 수행하는 등의 시나리오를 사용할 수 있습니다.
이 생성자는 작업입니다 O(1) .
추가 정보
적용 대상
Hashtable(IDictionary)
public:
Hashtable(System::Collections::IDictionary ^ d);
public Hashtable(System.Collections.IDictionary d);
new System.Collections.Hashtable : System.Collections.IDictionary -> System.Collections.Hashtable
Public Sub New (d As IDictionary)
매개 변수
IDictionary 새 Hashtable 개체에 복사할 개체입니다.
예외
d은 null입니다.
예제
다음 코드 예제에서는 서로 다른 Hashtable 생성자를 사용 하 여 해시 테이블을 만들고 각각 동일한 요소를 포함 하는 경우에 해시 테이블의 동작의 차이점을 보여 줍니다.
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
return myComparer.Compare(x, y) == 0;
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create the dictionary.
var mySL = new SortedList();
mySL.Add("FIRST", "Hello");
mySL.Add("SECOND", "World");
mySL.Add("THIRD", "!");
// Create a hash table using the default comparer.
var myHT1 = new Hashtable(mySL);
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
var myHT2 = new Hashtable(mySL, new myCultureComparer());
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
var myCul = new CultureInfo("tr-TR");
var myHT3 = new Hashtable(mySL, new myCultureComparer(myCul));
// Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}");
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}");
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}");
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
Return myComparer.Compare(x, y) = 0
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create the dictionary.
Dim mySL As New SortedList()
mySL.Add("FIRST", "Hello")
mySL.Add("SECOND", "World")
mySL.Add("THIRD", "!")
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(mySL)
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(mySL, New myCultureComparer())
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(mySL, New myCultureComparer(myCul))
' Search for a key in each hash table.
Console.WriteLine($"first is in myHT1: {myHT1.ContainsKey("first")}")
Console.WriteLine($"first is in myHT2: {myHT2.ContainsKey("first")}")
Console.WriteLine($"first is in myHT3: {myHT3.ContainsKey("first")}")
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
설명
초기 용량은 원본 사전의 요소 수로 설정됩니다. 용량은 부하 요인에 따라 필요에 따라 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
해시 코드 공급자는 개체의 키 Hashtable 에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
새 Hashtable 요소는 열거자가 개체를 반복하는 순서와 동일한 순서로 정렬됩니다 IDictionary .
이 생성자는 O(n) 매개 변수의 요소 d 수가 있는 n 작업입니다.
추가 정보
적용 대상
Hashtable(Int32, IEqualityComparer)
지정된 초기 용량 및 IEqualityComparer기본 로드 팩터를 Hashtable 사용하여 클래스의 비어 있는 새 인스턴스를 초기화합니다.
public:
Hashtable(int capacity, System::Collections::IEqualityComparer ^ equalityComparer);
public Hashtable(int capacity, System.Collections.IEqualityComparer equalityComparer);
new System.Collections.Hashtable : int * System.Collections.IEqualityComparer -> System.Collections.Hashtable
Public Sub New (capacity As Integer, equalityComparer As IEqualityComparer)
매개 변수
- equalityComparer
- IEqualityComparer
IEqualityComparer 해시 코드 공급자와 함께 사용할 비교자를 정의하는 개체입니다Hashtable.
-또는-
null 기본 해시 코드 공급자와 기본 비교자를 사용합니다. 기본 해시 코드 공급자는 각 키의 구현 GetHashCode() 이며 기본 비교자는 각 키의 구현입니다 Equals(Object).
예외
capacity가 0보다 작습니다.
예제
다음 코드 예제에서는 서로 다른 Hashtable 생성자를 사용 하 여 해시 테이블을 만들고 각각 동일한 요소를 포함 하는 경우에 해시 테이블의 동작의 차이점을 보여 줍니다.
using System;
using System.Collections;
using System.Globalization;
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
if (myComparer.Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(object obj)
{
// Compare the hash code for the lowercase versions of the strings.
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
// Create a hash table using the default comparer.
Hashtable myHT1 = new Hashtable(3);
myHT1.Add("FIRST", "Hello");
myHT1.Add("SECOND", "World");
myHT1.Add("THIRD", "!");
// Create a hash table using the specified IEqualityComparer that uses
// the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Hashtable myHT2 = new Hashtable(3, new myCultureComparer());
myHT2.Add("FIRST", "Hello");
myHT2.Add("SECOND", "World");
myHT2.Add("THIRD", "!");
// Create a hash table using an IEqualityComparer that is based on
// the Turkish culture (tr-TR) where "I" is not the uppercase
// version of "i".
CultureInfo myCul = new CultureInfo("tr-TR");
Hashtable myHT3 = new Hashtable(3, new myCultureComparer(myCul));
myHT3.Add("FIRST", "Hello");
myHT3.Add("SECOND", "World");
myHT3.Add("THIRD", "!");
// Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"));
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"));
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"));
}
}
/*
This code produces the following output.
Results vary depending on the system's culture settings.
first is in myHT1: False
first is in myHT2: True
first is in myHT3: False
*/
Imports System.Collections
Imports System.Globalization
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
If (myComparer.Compare(x, y) = 0) Then
Return True
Else
Return False
End If
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Public Class SamplesHashtable
Public Shared Sub Main()
' Create a hash table using the default comparer.
Dim myHT1 As New Hashtable(3)
myHT1.Add("FIRST", "Hello")
myHT1.Add("SECOND", "World")
myHT1.Add("THIRD", "!")
' Create a hash table using the specified IEqualityComparer that uses
' the CaseInsensitiveComparer.DefaultInvariant to determine equality.
Dim myHT2 As New Hashtable(3, New myCultureComparer())
myHT2.Add("FIRST", "Hello")
myHT2.Add("SECOND", "World")
myHT2.Add("THIRD", "!")
' Create a hash table using an IEqualityComparer that is based on
' the Turkish culture (tr-TR) where "I" is not the uppercase
' version of "i".
Dim myCul As New CultureInfo("tr-TR")
Dim myHT3 As New Hashtable(3, New myCultureComparer(myCul))
myHT3.Add("FIRST", "Hello")
myHT3.Add("SECOND", "World")
myHT3.Add("THIRD", "!")
' Search for a key in each hash table.
Console.WriteLine("first is in myHT1: {0}", myHT1.ContainsKey("first"))
Console.WriteLine("first is in myHT2: {0}", myHT2.ContainsKey("first"))
Console.WriteLine("first is in myHT3: {0}", myHT3.ContainsKey("first"))
End Sub
End Class
'This code produces the following output.
'Results vary depending on the system's culture settings.
'
'first is in myHT1: False
'first is in myHT2: True
'first is in myHT3: False
설명
초기 용량을 지정하면 개체에 요소를 Hashtable 추가하는 동안 많은 크기 조정 작업을 수행할 필요가 없습니다. 용량은 부하 요인에 따라 필요에 따라 자동으로 증가합니다.
부하 요소는 버킷에 대한 요소의 최대 비율입니다. 로드 팩터가 작을수록 메모리 사용량이 증가하는 비용을 더 빠르게 조회할 수 있습니다.
실제 로드 팩터가 지정된 부하 요소에 도달하면 버킷 수가 현재 버킷 수의 두 배보다 큰 가장 작은 소수로 자동으로 증가합니다.
개체에는 IEqualityComparer 해시 코드 공급자와 비교자가 모두 포함됩니다. IEqualityComparer 생성자에서 Hashtable 사용되는 경우 키 Hashtable 로 사용되는 개체는 해당 개체와 Object.Equals 메서드를 재정의 Object.GetHashCode 할 필요가 없습니다.
해시 코드 공급자는 .의 Hashtable키에 대한 해시 코드를 분배합니다. 기본 해시 코드 공급자는 키의 구현입니다 Object.GetHashCode.
비교자는 두 키가 같은지 여부를 결정합니다. 모든 키는 Hashtable에서 고유해야 합니다. 기본 비교자는 키의 구현입니다 Object.Equals.
대 IEqualityComparer /소문자를 구분하지 않는 문자열을 사용하여 조회를 수행하는 등의 시나리오를 사용할 수 있습니다.
이 생성자는 매개 변수인 O(n)n 작업입니다 capacity .