C# | Clase de tabla hash

La clase Hashtable representa una colección de pares clave/valor que se organizan en función del código hash de la clave. Esta clase viene bajo el espacio de nombres System.Collections . La clase Hashtable proporciona varios tipos de métodos que se utilizan para realizar diferentes tipos de operaciones en las tablas hash. En Hashtable, las claves se utilizan para acceder a los elementos presentes en la colección. Para objetos Hashtable muy grandes, puede aumentar la capacidad máxima a 2 mil millones de elementos en un sistema de 64 bits.

Características de la clase Hashtable: 

  • En Hashtable, la clave no puede ser nula, pero el valor puede serlo.
  • En Hashtable, los objetos clave deben ser inmutables siempre que se usen como claves en Hashtable.
  • La capacidad de un Hashtable es el número de elementos que puede contener Hashtable.
  • Cada objeto clave en Hashtable proporciona una función hash.

Constructores

CONSTRUCTOR DESCRIPCIÓN
Tabla de picadillo() Inicializa una nueva instancia vacía de la clase Hashtable utilizando la capacidad inicial predeterminada, el factor de carga, el proveedor de código hash y el comparador.
Tabla Hash (IDiccionario) Inicializa una nueva instancia de la clase Hashtable copiando los elementos del diccionario especificado al nuevo objeto Hashtable. El nuevo objeto Hashtable tiene una capacidad inicial igual a la cantidad de elementos copiados y usa el factor de carga predeterminado, el proveedor de código hash y el comparador.
Hashtable (IDictionary, IEqualityComparer) Inicializa una nueva instancia de la clase Hashtable copiando los elementos del diccionario especificado a un nuevo objeto Hashtable. El nuevo objeto Hashtable tiene una capacidad inicial igual a la cantidad de elementos copiados y usa el factor de carga predeterminado y el objeto IEqualityComparer especificado.
Tabla hash (IDictionary, IHashCodeProvider, IComparer) Inicializa una nueva instancia de la clase Hashtable copiando los elementos del diccionario especificado al nuevo objeto Hashtable. El nuevo objeto Hashtable tiene una capacidad inicial igual al número de elementos copiados y utiliza el factor de carga predeterminado y el comparador y proveedor de código hash especificado. Esta API está obsoleta. Para ver una alternativa, consulte Hashtable(IDictionary, IEqualityComparer).
Hashtable (IDictionary, Single) Inicializa una nueva instancia de la clase Hashtable copiando los elementos del diccionario especificado al nuevo objeto Hashtable. El nuevo objeto Hashtable tiene una capacidad inicial igual al número de elementos copiados y utiliza el factor de carga especificado y el comparador y proveedor de código hash predeterminado.
Hashtable (IDictionary, Single, IEqualityComparer) Inicializa una nueva instancia de la clase Hashtable copiando los elementos del diccionario especificado al nuevo objeto Hashtable. El nuevo objeto Hashtable tiene una capacidad inicial igual a la cantidad de elementos copiados y usa el factor de carga especificado y el objeto IEqualityComparer.
Hashtable (IDictionary, Single, IHashCodeProvider, IComparer) Inicializa una nueva instancia de la clase Hashtable copiando los elementos del diccionario especificado al nuevo objeto Hashtable. El nuevo objeto Hashtable tiene una capacidad inicial igual a la cantidad de elementos copiados y usa el factor de carga, el proveedor de código hash y el comparador especificados.
Tabla hash (comparador de calidad IE) Inicializa una instancia nueva y vacía de la clase Hashtable utilizando la capacidad y el factor de carga iniciales predeterminados, y el objeto IEqualityComparer especificado.
Tabla Hash (IHashCodeProvider, IComparer) Inicializa una instancia nueva y vacía de la clase Hashtable utilizando la capacidad y el factor de carga iniciales predeterminados, y el comparador y el proveedor de código hash especificados.
Tabla hash (Int32) Inicializa una nueva instancia vacía de la clase Hashtable utilizando la capacidad inicial especificada y el factor de carga predeterminado, el proveedor de código hash y el comparador.
Tabla hash (Int32, IEqualityComparer) Inicializa una nueva instancia vacía de la clase Hashtable utilizando la capacidad inicial especificada y IEqualityComparer, y el factor de carga predeterminado.
Tabla hash (Int32, IHashCodeProvider, IComparer) Inicializa una nueva instancia vacía de la clase Hashtable utilizando la capacidad inicial especificada, el proveedor de código hash, el comparador y el factor de carga predeterminado.
Tabla Hash (Int32, Único) Inicializa una nueva instancia vacía de la clase Hashtable utilizando la capacidad inicial y el factor de carga especificados, y el comparador y proveedor de código hash predeterminado.
Hashtable (Int32, Single, IEqualityComparer) Inicializa una nueva instancia vacía de la clase Hashtable utilizando la capacidad inicial, el factor de carga y el objeto IEqualityComparer especificados.
Tabla hash (Int32, Single, IHashCodeProvider, IComparer) Inicializa una nueva instancia vacía de la clase Hashtable utilizando la capacidad inicial, el factor de carga, el proveedor de código hash y el comparador especificados.
Tabla hash (SerializationInfo, StreamingContext) Inicializa una nueva instancia vacía de la clase Hashtable que se puede serializar mediante los objetos SerializationInfo y StreamingContext especificados.

Ejemplo: 

C#

// C# program to create Hashtable
using System;
using System.Collections;
 
class GFG {
 
    // Main method
    static void Main(string[] args)
    {
 
        // create and initialize Hash table
        // using Add() method
        Hashtable g = new Hashtable();
        g.Add(1, "welcome");
        g.Add(2, "to");
        g.Add(3, "tutorials");
        g.Add(4, "of");
        g.Add(5, "C#");
 
        ICollection key = g.Keys;
 
        // Print Hash table
        Console.WriteLine("Hashtable:");
        Console.WriteLine();
        foreach(var val in key)
        {
            Console.WriteLine(val + "-" + g[val]);
        }
    }
}

Producción:

Hashtable:

5-C#
4-of
3-tutorials
2-to
1-welcome

Propiedades

PROPIEDAD DESCRIPCIÓN
comparador Obtiene o establece el IComparer que se usará para Hashtable.
Contar Obtiene el número de pares clave/valor contenidos en Hashtable.
Igualdad Comparador Obtiene el IEqualityComparer que se usará para Hashtable.
hcp Obtiene o establece el objeto que puede dispensar códigos hash.
EsTamañoFijo Obtiene un valor que indica si Hashtable tiene un tamaño fijo.
es solo lectura Obtiene un valor que indica si Hashtable es de solo lectura.
Está sincronizado Obtiene un valor que indica si el acceso a Hashtable está sincronizado (seguro para subprocesos).
Artículo[Objeto] Obtiene o establece el valor asociado a la clave especificada.
Llaves Obtiene una ICollection que contiene las claves de Hashtable.
SyncRoot Obtiene un objeto que se puede usar para sincronizar el acceso a Hashtable.
Valores Obtiene una ICollection que contiene los valores de Hashtable.

Ejemplo: 

C#

// C# Program to illustrate the
// Properties of Hashtable
using System;
using System.Collections;
 
class GFG {
 
    // Main method
    static void Main(string[] args)
    {
 
        // create and initialize Hash table
        // using Add() method
        Hashtable has1 = new Hashtable();
        has1.Add("1", "Welcome");
        has1.Add("2", "to");
        has1.Add("3", "geeks");
        has1.Add("4", "for");
        has1.Add("5", "geeks");
 
        // --------- Using IsSynchronized Property
 
        // Creating a synchronized packing
        // around the Hashtable
        Hashtable has2 = Hashtable.Synchronized(has1);
 
        // print the status of both Hashtables
        Console.WriteLine("has1 Hashtable is {0}.",
             has1.IsSynchronized ? "synchronized" :
                               "not synchronized");
 
        Console.WriteLine("has2 Hashtable is {0}.",
             has2.IsSynchronized ? "synchronized" :
                               "not synchronized");
 
        // --------- Using Count Property
 
        Console.WriteLine("Total Number of Elements in has1: "
                                                + has1.Count);
    }
}

Producción: 

has1 Hashtable is not synchronized.
has2 Hashtable is synchronized.
Total Number of Elements in has1: 5

Métodos

MÉTODO DESCRIPCIÓN
Añadir(Objeto, Objeto) Agrega un elemento con la clave y el valor especificados en Hashtable.
Claro() Elimina todos los elementos de Hashtable.
Clon() Crea una copia superficial de Hashtable.
Contiene (Objeto) Determina si Hashtable contiene una clave específica.
Contiene clave (objeto) Determina si Hashtable contiene una clave específica.
ContieneValor(Objeto) Determina si Hashtable contiene un valor específico.
Copiar a (array, Int32) Copia los elementos de Hashtable en una instancia de Array unidimensional en el índice especificado.
Es igual a (Objeto) Determina si el objeto especificado es igual al objeto actual.
ObtenerEnumerador() Devuelve un IDictionaryEnumerator que itera a través de Hashtable.
ObtenerHash(Objeto) Devuelve el código hash de la clave especificada.
Obtener código hash() Sirve como la función hash predeterminada.
GetObjectData(SerializationInfo, StreamingContext) Implementa la interfaz ISerializable y devuelve los datos necesarios para serializar Hashtable.
ObtenerTipo() Obtiene el Tipo de la instancia actual.
KeyEquals(Objeto, Objeto) Compara un objeto específico con una clave específica en Hashtable.
MemberwiseClone() Crea una copia superficial del objeto actual.
OnDeserialization(Objeto) Implementa la interfaz ISerializable y genera el evento de deserialización cuando se completa la deserialización.
Eliminar (Objeto) Elimina el elemento con la clave especificada de Hashtable.
Sincronizado (tabla hash) Devuelve un contenedor sincronizado (seguro para subprocesos) para Hashtable.
Enstringr() Devuelve una string que representa el objeto actual.

Ejemplo: 

C#

// C# program to illustrate Add()
// and Remove() Methods
using System;
using System.Collections;
 
class Program {
 
    // Main method
    static void Main(string[] args)
    {
 
        // -------- Add() Method --------
 
        // create and initialize Hash table
        // using Add() method
        Hashtable g = new Hashtable();
        g.Add("1", "Welcome");
        g.Add("2", "to");
        g.Add("3", "Geeks");
        g.Add("4", "for");
        g.Add("5", "Geeks");
 
        ICollection key = g.Keys;
 
        // Print Hash table
        Console.WriteLine("Hashtable Contains:");
 
        foreach(var val in key)
        {
            Console.WriteLine(val + "-" + g[val]);
        }
 
        Console.WriteLine();
 
        // --------- Remove() Method ----------'
 
        // Remove element 4
        // using Remove() method
        g.Remove("4");
 
        // printing updated Hash table
        Console.WriteLine("Hashtable after removing element 4:");
 
        foreach(var val in key)
        {
            Console.WriteLine(val + "-" + g[val]);
        }
    }
}

Producción: 

Hashtable Contains:
2-to
3-Geeks
5-Geeks
1-Welcome
4-for

Hashtable after removing element 4:
2-to
3-Geeks
5-Geeks
1-Welcome

Referencia:  

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *