Índice
1. Introducción2. Palabras Clave
3. La Interfaz IDictionary<TKey, TValue>
4. Ejemplo de Uso
5. Conclusiones
6. Literatura & Enlaces
1. Introducción
Entramos al estudio de los diccionarios: una estructura de datos o colección donde los elementos se representan con dos partes: una llave y un valor. Facilita la búsqueda, y es apropiada para listas ordenadas. En esta serie comprenderemos las interfaces que provee .NET para los diccionarios: IDictionary y IDictionary(TKey, TValue). También se incluye la descripción de implementaciones: OrderedDictionary, HybridDictionary y ListDictionary.
Este primer artículo describe la interfaz IDictionary(TKey, TValue), la cual constituye la interfaz para colecciones genéricas basadas en una llave y un valor.
2. Palabras Clave
- Diccionario
- Estructura de Datos
- Llave
- Valor
3. Diccionario
En el mundo de las colecciones o estructuras de datos un diccionario dispone los elementos por una llave y un valor asociado a esa llave. Para acceder a un elemento basta con especificar su llave; luego, la llave se puede ver como la palabra en un diccionario enciclopédico y su valor como su definición.
Figura 1. Analogía con diccionario enciclopédico ("Imagen diccionario", 2017). |
Entre las características distintivas de esta estructura se hallan (Albahari, 2012):
- Los datos o contenido de un elemento se acceden a través de un valor único.
- El acceso tiene un complejidad O(1).
- Una de la llave es través de un algoritmo de hash.
- La estructura se análoga a un mapa: dado un nombre se accede a la locación concreta donde se haya el elemento.
- Es posible tener como llave un valor null.
- Se puede especificar un enumerador pero sin la promesa que el contenido esté ordenado.
En C# existen diferentes implementaciones de diccionario: la primera que se va a estudiar es IDictionary<TKey, TValue>.
3. La Interfaz IDictionary<TKey, TValue>
Esta interfaz representa un diccionario con llave y valor genéricos: TKey, TValue. En la firma de encabezado de esta interfaz se aprecia que implementa la interfaz genérica ICollection<KeyValuePair<TKey, TValue>>; y así mismo la adaptación a estructura enumerable con IEnumerable<KeyValuePair<TKey, TValue>>.
Entre sus propiedades genéricas se hallan ("IDictionary", 2017):
- Count: Obtiene el número de elementos en el diccionario; i.e., la cantidad de llaves.
- Keys: Llaves del diccionario.
- Values: Valores del diccionario.
Y así mismo, estos métodos ("IDictionary", 2017):
- Add(T): Agrega un elemento al diccionario.
- Add(TKey, TValue): Agrega un elemento a partir de una llave y un valor.
- Contains(T): Comprueba si un elemento existe en la colección.
- Remove(T): Remueve la primera ocurrencia.
- Remove(TKey): Remueve un elemento a través de su llave.
Para el método Add vale apuntar que si se intenta agregar un elemento con la misma llave, la excepción ArgumentException (Excepciones en C# - Parte 5: Ejemplos de Excepciones Comunes) es lanzada.
Para la enumeración de los elementos se provee el método GetEnumerator. Este método retorna una secuencia de objetos KeyValuePair: representa la llave y el valor de cada uno de los elementos que contiene el diccionario.
4. Ejemplo de Uso
Veamos el siguiente ejemplo de uso básico:
En la línea 10 se crea una instancia de la implementación concreta de IDictionary<TKey, TValue>. Esta instancia representa la asociación de extensiones de tipos de archivos con el programa manejador para apertura: en las líneas 13-16 se agregan los elementos, y luego, en las líneas 18-22 se itera el diccionario: notemos aquí que cada elemento se presenta con un objeto KeyValuePair<string, string>.
5. Conclusiones
Describimos la interfaz IDictionary<TKey, TValue>: representación general o abstracta de una estructura de datos basada en diccionario: cada elemento se presenta por dos ítems: una llave y un valor. Su analogía principal es la de Dictionary<TKey, TValue>.
6. Literatura & Enlaces
Albahari, J., Albahari, B. (2012). C# 5.0 in a Nutshell. United States: O'Reilly Media.Imagen diccionario (2017). Recuperado desde: https://androidayuda.com/app/uploads/2015/02/diccionario-2.jpg
IDictionary(TKey, TValue) Interface (System.Collections.Generic) (2017). Recuperado desde: https://msdn.microsoft.com/en-us/library/s4ys34ea(v=vs.110).aspx
Excepciones en C# - Parte 5: Ejemplos de Excepciones Comunes (2017). Recuperado desde: https://ortizol.blogspot.com.co/2014/07/excepciones-en-csharp-parte-5-ejemplos-de-excepciones-comunes.html
O
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.