Buscar este blog

viernes, 29 de marzo de 2013

VB. NET - Usando la colección genérica Dictionary

Usted conoce la clase genérica Dictionary? Si usted no sabe permítanme presentarles...
La clase Dictionary representa una colección de claves y valores. Es una colección de tipo clave / valor e implementa la interfaz IDictionary que tiene dos colecciones en su interior una para guardar la clave y otro para guardar el valor.
La sintaxis es la siguiente:
Dictionary (Of (TKey, TValue))
Está presente en namespace: System.Collections.Generic
En el assembly: mscorlib.dll
Dónde:
TKey - representa el tipo de clave en el diccionario.
TValue - representa el tipo de valor en el diccionario.
La clase genérica Dictionary es una clase que mapea un conjunto de claves, que pueden ser de cualquier tipo y un conjunto de valores, que también pueden ser de cualquier tipo, los tipos de clave y de valor no tiene por qué ser idénticos.
Podemos decir que la colección Dictionary es un tipo de colección genérica que se crea en el momento de definir la colección. Es una colección de tipo clave / valor donde la clave hace el papel de índice en la colección.
Cada inclusión de un elemento en el diccionario se compone de un valor y su clave asociada. El retorno de un valor a partir de su clave tiene un buen desempeño debido a que la clase Dictionary e implementa como un hashtable.
En todos los ejemplos de este artículo se va usar Visual Basic 2012 Ultimate.
A continuación, examinaremos algunas de las propiedades y características de la clase Dictionary:
Para crear un objeto de Dictionary debe definir una clave seguida de un valor. El primero indica la clave del elemento que debe incluirse, y el segundo representa el valor que la clave debe tener.
Para incluir elementos en un objeto Dictionary debe utilizar el método Add.
Veamos a continuación un ejemplo de cómo crear un objeto Dictionary en Visual Basic 2012 Ultimate:

En el código anterior se crea un objeto Dictionary con claves de tipo String y valores de tipo entero se utiliza el método Add para incluir seis claves y valores. Si se incluye una clave que ya existe en el diccionario se produce una excepción, para evitar esto usted puede comprobar si una clave que ya existe a través del método ContainsKey.
El siguiente es un ejemplo que utiliza el método ContainsKey para comprobar si una clave ya existe, diseñar el formulario y al botón añadir el código siguiente:


Private Sub Button1_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      'Declara un nuevo Dictionary  de clave tipo string y valores integer
        Dim Frutas As New Dictionary (Of String, Integer)
        ‘Incluye dos claves: naranja y maca
        ListBox1.Items.Add ("Incluyendo las claves: naranja (7) y maca (15)")
        Frutas.Add ("naranja", 7)
        Frutas.Add ("maca", 15)
        ‘Verifica se una clave ya existe
        If Frutas.ContainsKey ("naranja") Then
            ‘Escribe un valor para la clave
            ListBox1.Items.Add ("La clave naranja ya existe")
            Dim Valor As Integer = Frutas.Item ("naranja")
            ListBox1.Items.Add ("Valor = " & Valor)
        End If
        ‘Verifica se la clave ya existe
        If Frutas.ContainsKey ("maca") Then
            ListBox1.Items.Add ("La clave maca ya existe")
            Dim Valor As Integer = Frutas.Item ("maca")
            ListBox1.Items.Add ("Valor = " & Valor)
        End If
        If Not Frutas.ContainsKey ("pera") Then
            ListBox1.Items.Add ("La clave pera NO existe")
        End If
    End Sub

También puede almacenar el resultado de una verificación usando ContainsKey en una variable booleana y poner a prueba la variable usando los operadores = (igual) y <> (distinto).
Los principales métodos de la clase Dictionary son:
Add Incluye una clave y un valor especificado en el diccionario.
Clear Elimina todas las claves y los valores del diccionario.
ContainsKey Determina si el diccionario contiene una clave especifica.
ContainsValue Determina si el diccionario contiene un valor específico.
Equals Determina si el objeto especificado es igual al objeto actual.
GetEnumerator Devuelve una enumeración que itera el diccionario.
Remove Quita el valor con la clave especificada del diccionario.
TryGetValue Obtiene el valor asociado a la clave especificada.
Las principales propiedades de la clase Dictionary son:
Count Obtiene el número de par clave/valor contenido en un diccionario.
Item Obtiene o establece el valor asociado a una clave específica.
Keys Obtiene una colección que contiene las claves en el diccionario.
Values Obtiene una colección que contiene los valores en el diccionario.
Para recorrer un objeto Dictionary podemos utilizar un bucle For Each y para obtener la clave y el valor de cada elemento del diccionario, creamos una variable KeyValuePair.
A continuación se muestra un ejemplo, añadimos un segundo botón. y añadimos al botón el siguiente código: 
  
Private Sub Button2_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ListBox1.Items.Clear ()
        ‘Crea un Dictionary e incluye 8 claves de tipo String
        Dim Equipos As New Dictionary (Of String, Integer)
        Equipos. Add ("Crystal", 54)
        Equipos.Add ("Universitario", 41)
        Equipos.Add ("Alianza", 49)
        Equipos.Add ("Cienciano", 50)
        Equipos.Add ("Sport Huancayo", 41)
        Equipos.Add ("Inti Gas", 48)
        Equipos.Add ("Boys", 45)
        Equipos.Add ("León de Huánuco", 46)
        'Un Loop para recorrer el diccionario
        Dim Par As KeyValuePair (Of String, Integer)
        For Each Par In Equipos
            ‘Exhibe la clave y los valores
            ListBox1.Items.Add (Par.Key & "=" & Par.Value)
        Next
End Sub
 
Podemos mostrar el contenido de un objeto de tipo Dictionary a partir  de una lista de claves de un Dictionary. Cada instância de Dictionary possui uma propriedade Get com o identificador Keys . Cada instancia de Dictionary posee una propiedad Get con un identificador Keys. Você pode acessar esta coleção e passá-la para o construtor da Lista de chaves. Se puede acceder a esta colección y pasarlo al constructor de la lista de claves. As chaves possuem o mesmo tipo que o Dictionary de origem:Las claves tienen el mismo tipo del Dictionary de origen.
Al formulario añadimos un tercer botón y le agregamos el siguiente código:

Private Sub Button3_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        ListBox1.Items.Clear ()
        ‘Crea 5 claves y valores en el diccionario
        Dim Carros As New Dictionary (Of String, Integer)
        Carros.Add ("Nissan", 12)
        Carros.Add ("Toyota", 11)
        Carros.Add ("Ford", 10)
        Carros.Add ("Yaris", -21)
        Carros.Add ("Volkswagen", -8)
        ‘Asigna las clave a una lista de strings
        Dim lista As New List (Of String)(Carros.Keys)
        ‘Recorre la lista
        Dim str As String
        For Each str In lista
            ‘Imprime la cadena y también el elemento
            ListBox1.Items.Add (str & " - " & carros.Item (str))
        Next
    End Sub

O resultado obtido é o seguinte:El resultado es el siguiente:
 
 
 
 
 
 
 
 
 
 

 

 

 

No hay comentarios:

Publicar un comentario