Export (0) Print
Expand All

Hashtable.Hashtable(Int32, IHashCodeProvider, IComparer) Constructor

NOTE: This constructor is now obsolete.

Initializes a new, empty instance of the Hashtable class using the specified initial capacity, hash code provider, comparer, and the default load factor.

Namespace: System.Collections
Assembly: mscorlib (in mscorlib.dll)

'Declaration
<ObsoleteAttribute("Please use Hashtable(int, IEqualityComparer) instead.")> _
Public Sub New ( _
	capacity As Integer, _
	hcp As IHashCodeProvider, _
	comparer As IComparer _
)
'Usage
Dim capacity As Integer
Dim hcp As IHashCodeProvider
Dim comparer As IComparer

Dim instance As New Hashtable(capacity, hcp, comparer)
/** @attribute ObsoleteAttribute("Please use Hashtable(int, IEqualityComparer) instead.") */ 
public Hashtable (
	int capacity, 
	IHashCodeProvider hcp, 
	IComparer comparer
)
ObsoleteAttribute("Please use Hashtable(int, IEqualityComparer) instead.") 
public function Hashtable (
	capacity : int, 
	hcp : IHashCodeProvider, 
	comparer : IComparer
)
Not applicable.

Parameters

capacity

The approximate number of elements that the Hashtable object can initially contain.

hcp

The IHashCodeProvider object that supplies the hash codes for all keys in the Hashtable.

-or-

a null reference (Nothing in Visual Basic) to use the default hash code provider, which is each key's implementation of Object.GetHashCode.

comparer

The IComparer object to use to determine whether two keys are equal.

-or-

a null reference (Nothing in Visual Basic) to use the default comparer, which is each key's implementation of Object.Equals.

Exception typeCondition

ArgumentOutOfRangeException

capacity is less than zero.

Specifying the initial capacity eliminates the need to perform a number of resizing operations while adding elements to the Hashtable object. Capacity is automatically increased as required based on the load factor.

The load factor is the maximum ratio of elements to buckets. A smaller load factor means faster lookup at the cost of increased memory consumption.

When the actual load factor reaches the specified load factor, the number of buckets is automatically increased to the smallest prime number that is larger than twice the current number of buckets.

The hash code provider dispenses hash codes for keys in the Hashtable. The default hash code provider is the key's implementation of Object.GetHashCode.

The comparer determines whether two keys are equal. Every key in a Hashtable must be unique. The default comparer is the key's implementation of Object.Equals.

The custom hash code provider and the custom comparer enable scenarios such as doing lookups with case-insensitive strings.

This constructor is an O(n) operation, where n is the capacity parameter.

The following code example creates hash tables using different Hashtable constructors and demonstrates the differences in the behavior of the hash tables, even if each one contains the same elements.

Imports System
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 'Main 

End Class 'SamplesHashtable


'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


Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 1.0, 1.1, 2.0
Obsolete (compiler warning) in 3.0

.NET Compact Framework

Supported in: 1.0
Obsolete (compiler warning) in 2.0

XNA Framework

Supported in: 1.0

Community Additions

ADD
Show:
© 2014 Microsoft