Anuncios

Bienvenidos sean a este post, hoy continuaremos con las colecciones en C# pero a diferencia de las dos anteriores no se asigna a una posicion fija sino que podremos asociarlo a una clave.

Anuncios

Este tipo de coleccion es ideal para cuando tenemos que trabajar con formas especificas de busqueda de un valor, ya que nos permitiria tener una busqueda en lugar de un indice por algo que lo identifique mejor, veamos primero su sintaxis:

Dictionary <T Clave, T Dato> nombre = new Dictionary<T Clave, T Dato>();
Anuncios
Anuncios

Primero ira el nombre de la clase luego entre los signos de menor y mayor pondremos primero el tipo de dato que usaremos para almacenar la clave seguido de una coma por el tipo de dato que usaremos para el valor, luego le pasaremos el nombre que le asignaremos, en el constructor debemos respetar los mismos tipos que antes.

A diferencia de cuando vimos arrays y List esta clase no trabaja en base de asignar un valor de posicion a medida que le agreguemos los datos, sino que deberemos asignarle cual va a ser la clave con la que estara relacionada, podemos usarlo como alguna de las clases antes mencionadas, usando como clave un valor de tipo int que vayamos incrementando pero perderia todo sentido porque podriamos usar cualquiera de las dos clases anteriormente citados, otra de las caracteristicas que posee es que no podemos repetir la clave pero si los valores, veamos algunas de las propiedades que tenemos disponibles:

  • Count, devuelve la cantidad de claves y valores almacenados
  • Item[Clave], setea o devuelve un valor de la clave informada
  • Keys, devuelve una coleccion de las claves del objeto
  • Values, devuelve una coleccion de los valores del objeto
Anuncios

Ahora pasemos a ver algunos de los metodos disponibles:

  • Add, agrega un elemento con su clave y valor
  • Clear, limpia el diccionario
  • ContainsKey, determina si el diccionario posee la clave informada
  • ContainsValue, igual al anterior pero con el valor
  • Remove, remueve el valor en base a la clave informada
  • TryGetValue, devuelve un booleano si existe un valor en base a la clave que informamos
Anuncios

Para entender mejor el concepto vamos a analizar el siguiente ejemplo:

diccionario.cs

using System;
using System.Collections.Generic;

public class Program
{
	static int Main()
	{
		Dictionary<string, string> diccionario = 
			new Dictionary<string, string>();
		
		diccionario.Add("mirandma","Martin Miranda");
		diccionario.Add("polizzia","Ariel Polizzi");
		diccionario.Add("picosr","Raul Picos");
		diccionario.Add("militelj","Juan Militello");
		diccionario.Add("lopezca","Carlos Lopez");

		Console.WriteLine("Lista de Claves");
		foreach(string k in diccionario.Keys)
			Console.WriteLine(k);

		Console.WriteLine("\nLista de Valores");
		foreach(string v in diccionario.Values)
			Console.WriteLine(v);
		
		Console.WriteLine("\nClaves y Valores");
		foreach(string k in diccionario.Keys)
			Console.WriteLine(k + "->" + diccionario[k]);

		Console.WriteLine("\nTotal de Datos:" 
			+ diccionario.Count);

		return 0;
	}
}
Anuncios

En este codigo primero crearemos el objeto de tipo Dictionary y lo llamaremos diccionario, veamos nuestro siguiente bloque:

		diccionario.Add("mirandma","Martin Miranda");
		diccionario.Add("polizzia","Ariel Polizzi");
		diccionario.Add("picosr","Raul Picos");
		diccionario.Add("militelj","Juan Militello");
		diccionario.Add("lopezca","Carlos Lopez");
Anuncios

En este caso agregaremos cinco valores a nuestro diccionario, donde el valor de la clave para este ejemplo sera el usuario de red, el valor del dato sera el nombre y apellido del usuario, con estos valores ingresados pasemos a analizar el siguiente bloque:

		Console.WriteLine("Lista de Claves");
		foreach(string k in diccionario.Keys)
			Console.WriteLine(k);
Anuncios

Para este bloque usaremos un foreach donde le diremos que pase por toda la coleccion pero le diremos que use los valores de las claves por medio de Keys, este dato lo almacenamos en k y lo mostramos en pantalla, su salida sera este:

Lista de Claves
mirandma
polizzia
picosr
militelj
lopezca
Anuncios

Con esto concluido pasemos a analizar el siguiente bloque:

		Console.WriteLine("\nLista de Valores");
		foreach(string v in diccionario.Values)
			Console.WriteLine(v);
Anuncios

Volvemos a hacer lo mismo que antes pero esta vez en lugar de usar las claves usaremos los valores por medio de Values, esto lo almacenaremos en v y lo mostraremos en pantalla, veamos su salida:

Lista de Valores
Martin Miranda
Ariel Polizzi
Raul Picos
Juan Militello
Carlos Lopez
Anuncios

Para nuestro siguiente bloque combinaremos a las dos busquedas:

		Console.WriteLine("\nClaves y Valores");
		foreach(string k in diccionario.Keys)
			Console.WriteLine(k + "->" + diccionario[k]);
Anuncios

En este bloque usaremos un foreach donde buscaremos las claves por medio de Keys y lo almacenamos en k, luego mostraremos en pantalla este valor y le concatenaremos la devolucion de diccionario en base a la clave, la salida sera la siguiente:

Claves y Valores
mirandma->Martin Miranda
polizzia->Ariel Polizzi
picosr->Raul Picos
militelj->Juan Militello
lopezca->Carlos Lopez
Anuncios

Como pueden observar pudimos traer todos los valores, tanto de las claves como de los datos que almacena, por ultimo tenemos una linea que nos muestra la cantidad de elementos en el diccionario, veamos su salida final mediante el siguiente video

Anuncios

En este video podemos ver como funciona nuestro diccionario, cuales son algunas de las ventajas que disponemos, bien usado es una herramienta super util, como todo tiene sus pros y contras, va a depender de nuestras necesidades pero es bueno tenerlo como una opcion mas.

Anuncios

En resumen, hoy hemos visto la clase Dictionary, que es, como se usa, algunas propiedades, algunos metodos, algunas diferencias con respecto a otras colecciones, un ejemplo donde lo pusimos practica, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

1.00 $