C# | Clase HybridDictionary – Part 1

HybridDictionary intenta optimizar Hashtable. Implementa una lista enlazada y una estructura de datos de tabla hash. Implementa IDictionary usando ListDictionary cuando la colección es pequeña y Hashtable cuando la colección es grande.

Propiedades de la clase HybridDictionary:

  • Esta clase se recomienda para los casos en los que se desconoce el número de elementos de un diccionario.
  • Aprovecha el rendimiento mejorado de un ListDictionary con colecciones pequeñas y ofrece la flexibilidad de cambiar a un Hashtable que maneja colecciones más grandes mejor que ListDictionary.
  • Si el tamaño inicial de la colección es mayor que el tamaño óptimo para ListDictionary, la colección se almacena en Hashtable para evitar la sobrecarga de copiar elementos de ListDictionary a Hashtable.
  • Una clave no puede ser nula, pero un valor sí.

Constructores

Constructor Descripción
DiccionarioHíbrido() Crea un HybridDictionary vacío que distingue entre mayúsculas y minúsculas.
Diccionario híbrido (booleano) Crea un HybridDictionary vacío con la distinción entre mayúsculas y minúsculas especificada.
Diccionario híbrido (Int32) Crea un HybridDictionary que distingue entre mayúsculas y minúsculas con el tamaño inicial especificado.
Diccionario híbrido (Int32, booleano) Crea un HybridDictionary con el tamaño inicial especificado y la distinción entre mayúsculas y minúsculas.

Ejemplo:

// C# code to create a HybridDictionary
// with the specified initial size
// and case sensitivity.
using System;
using System.Collections;
using System.Collections.Specialized;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a HybridDictionary with the
        // specified initial size and case sensitivity.
        HybridDictionary myDict = new HybridDictionary(10, false);
  
        // Adding key/value pairs in myDict
        myDict.Add("I", "first");
  
        // This will not raise exception as the
        // Collection is not case-insensitive
        myDict.Add("i", "first");
        myDict.Add("II", "second");
        myDict.Add("III", "third");
        myDict.Add("IV", "fourth");
        myDict.Add("V", "fifth");
  
        // Displaying the key/value pairs in myDict
        foreach(DictionaryEntry de in myDict)
            Console.WriteLine(de.Key + " " + de.Value);
    }
}
Producción:

III third
V fifth
II second
i first
I first
IV fourth

Propiedades

Propiedad Descripción
Contar Obtiene el número de pares clave/valor contenidos en HybridDictionary.
EsTamañoFijo Obtiene un valor que indica si HybridDictionary tiene un tamaño fijo.
es solo lectura Obtiene un valor que indica si HybridDictionary es de solo lectura.
Está sincronizado Obtiene un valor que indica si HybridDictionary 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 HybridDictionary.
SyncRoot Obtiene un objeto que se puede usar para sincronizar el acceso a HybridDictionary.
Valores Obtiene una ICollection que contiene los valores de HybridDictionary.

Ejemplo 1:

// C# code to get the number of key/value
// pairs contained in the HybridDictionary.
using System;
using System.Collections;
using System.Collections.Specialized;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a HybridDictionary named myDict
        HybridDictionary myDict = new HybridDictionary();
  
        // Adding key/value pairs in myDict
        myDict.Add("Australia", "Canberra");
        myDict.Add("Belgium", "Brussels");
        myDict.Add("Netherlands", "Amsterdam");
        myDict.Add("China", "Beijing");
        myDict.Add("Russia", "Moscow");
        myDict.Add("India", "New Delhi");
  
        // To get count of key/value pairs in myDict
        Console.WriteLine("Total key/value pairs in myDict are : " 
                                                  + myDict.Count);
    }
}
Producción:

Total key/value pairs in myDict are : 6

Ejemplo 2:

// C# code to check whether the
// HybridDictionary is read-only.
using System;
using System.Collections;
using System.Collections.Specialized;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a HybridDictionary named myDict
        HybridDictionary myDict = new HybridDictionary();
  
        // Adding key/value pairs in myDict
        myDict.Add("A", "Apple");
        myDict.Add("B", "Banana");
        myDict.Add("C", "Cat");
        myDict.Add("D", "Dog");
        myDict.Add("E", "Elephant");
        myDict.Add("F", "Fish");
  
        // To check whether the HybridDictionary
        // is read-only.
        Console.WriteLine(myDict.IsReadOnly);
    }
}
Producción:

False

Métodos

Método Descripción
Añadir(Objeto, Objeto) Agrega una entrada con la clave y el valor especificados en HybridDictionary.
Claro() Elimina todas las entradas del HybridDictionary.
Contiene (Objeto) Determina si HybridDictionary contiene una clave específica.
Copiar a (array, Int32) Copia las entradas de HybridDictionary 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 HybridDictionary.
Obtener código hash() Sirve como la función hash predeterminada.
ObtenerTipo() Obtiene el Tipo de la instancia actual.
MemberwiseClone() Crea una copia superficial del objeto actual.
Eliminar (Objeto) Elimina la entrada con la clave especificada de HybridDictionary.
Enstringr() Devuelve una string que representa el objeto actual.

Ejemplo 1:

// C# code to copy the HybridDictionary
// entries to a one-dimensional Array
// instance at the specified index.
using System;
using System.Collections;
using System.Collections.Specialized;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a HybridDictionary named myDict
        HybridDictionary myDict = new HybridDictionary();
  
        // Adding key/value pairs in myDict
        myDict.Add("A", "Apple");
        myDict.Add("B", "Banana");
        myDict.Add("C", "Cat");
        myDict.Add("D", "Dog");
        myDict.Add("E", "Elephant");
        myDict.Add("F", "Fish");
  
        // Creating a one-dimensional Array named myArr
        DictionaryEntry[] myArr = new DictionaryEntry[myDict.Count];
  
        // copying the HybridDictionary entries
        // to a one-dimensional Array instance
        // at the specified index
        myDict.CopyTo(myArr, 0);
  
        for (int i = 0; i < myArr.Length; i++)
            Console.WriteLine(myArr[i].Key + " --> " + myArr[i].Value);
    }
}
Producción:

A --> Apple
B --> Banana
C --> Cat
D --> Dog
E --> Elephant
F --> Fish

Ejemplo 2:

// C# code to remove the entry
// with the specified key from
// the HybridDictionary.
using System;
using System.Collections;
using System.Collections.Specialized;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a HybridDictionary named myDict
        HybridDictionary myDict = new HybridDictionary();
  
        // Adding key/value pairs in myDict
        myDict.Add("A", "Apple");
        myDict.Add("B", "Banana");
        myDict.Add("C", "Cat");
        myDict.Add("D", "Dog");
        myDict.Add("E", "Elephant");
        myDict.Add("F", "Fish");
  
        // Displaying the number of key/value
        // pairs in HybridDictionary myDict
        Console.WriteLine("Number of key/value pairs in myDict are : " 
                                                       + myDict.Count);
  
        // Removing the entry with the
        // specified key from the HybridDictionary.
        myDict.Remove("C");
  
        // Displaying the number of key/value
        // pairs in HybridDictionary myDict
        Console.WriteLine("Number of key/value pairs in myDict are : " 
                                                       + myDict.Count);
    }
}
Producción:

Number of key/value pairs in myDict are : 6
Number of key/value pairs in myDict are : 5

Referencia:

Publicación traducida automáticamente

Artículo escrito por Sahil_Bansall 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 *