Unidad 32. Colecciones en VB (I)





32.1. Objetivos del tema.

Explicar las características de las colecciones.

32.2. Introducción.

Podríamos definirlas como una enumeración, a la que se le pueden añadir o quitar elementos.

Podríamos definirlas como un array que en lugar de ser estático en el número de elementos, permite la adición y la eliminación de elementos, o sea que es dinámico, y que además esos elementos pueden ser objetos.

Desde el momento en que podemos declarar un array del tipo de un objeto determinado, un array es muy similar a una colección.

En VB las clases que gestionan colecciones son

 

Array

System.Collections

 

La clase array para la gestión con matrices.

La clase Collections dispone de dos clases a su vez:

 

Generic

Specialized

 

Los métodos para una colección son los necesarios para la gestión de la misma, y dado que no disponemos de un índice propiamente dicho, la gestión se basa en su recorrido, adición y eliminación.

 

Las colecciones disponen de un Enumerador que es un objeto que recorre en iteración su colección asociada.

La instrucción for each utiliza el enumerador y oculta la complejidad que supone su uso.

 

Todas las colecciones pueden copiarse en una matriz usando el método CopyTo, sin embargo, el orden de los elementos de la nueva matriz se basará en la secuencia en la que los devuelve el enumerador.

La matriz resultante siempre es unidimensional, vector, y su límite inferior es cero.

 

Algunas clases Collections tienen capacidades de ordenación y la mayor parte están indexadas.

La administración de la memoria se controla automáticamente y la capacidad de una colección se expande si es necesario.

 

Las clases System Collections pueden dividirse en tres tipos:

 

Colecciones utilizadas normalmente.            Son las variaciones habituales de las colecciones de datos, como tablas hash, colas, pilas, diccionarios y listas. Las colecciones que su usan habitualmente tienen versiones genéricas y no genéricas.

Colecciones de bits.                                    Se trata de colecciones cuyos elementos son indicadores de bits. Se comportan de forma ligeramente diferente de las demás.

Colecciones especializadas.                        Se trata de colecciones con fines muy específicos, normalmente para tratar un tipo concreto de elemento, como StringDictionary.

 

Los tipos de colecciones a utilizar se basan en la forma en la que se realiza el acceso.

Lista Secuencial en la que se descarta el miembro tras su recuperación, Lifo, Fifo.

 

Snack, Pilas

Queue, Colas

LinkedList

 

Si se desea acceder por un índice

 

StringCollection                             ArrayList

List                                               HashTable

SortedList                                     ListDictionary

StringDictionary

A su vez cada una de ellas en casos concretos son mejores que otras, por ejemplo ListDictionary es más rápida que HashTable en colecciones pequeñas.

32.3. Creación.

La definición de una colección es como sigue.

 

 Dim Coleccion As System.Collections.SortedList

 

La forma de añadir elementos

 

 Coleccion.add(123,"Mesas")

 

Conviene que realice la creación de la colección con distintos tipos de colección y observe el cambio de los métodos disponibles en la misma en función del tipo elegido.

 

 Dim Coleccion As System.Collections.Queue

 

En este tipo de colección el insertar un elemento tiene una sintaxis distinta.

 

 Dim Algo as New Object

 Dim Objetos As New System.Collections.Queue

 Objetos.Enqueue(Algo)

 

Se está utilizando una cola, una lista.

 

Todo esto va englobado después en una estructura repetitiva en la cual se crea la colección para tratarla posteriormente.

 

Pero el uso de una colección no se limita al uso de algo tan sencillo como un string.

Podemos utilizar objetos en una colección.

Podemos hacer éste otro uso en una colección:

 

Creamos una clase de la que instanciar luego objetos.

 

Public Class Datos

  Public Nombre As String

 

  Public Sub New()

  End Sub

End Class

 

Para después realizar algo parecido a lo siguiente:

 

Module Module1

  Sub Main()

    Console.WriteLine("Carga colección de objetos.")

 

    Dim Coleccion As System.Collections.Generic.List(Of Datos)

    Dim Item As New Datos

 

    Item.Nombre = "Silla"

    Coleccion.Add(Item)

 

    Item = New Datos()

    Item.Nombre = "Naranja"

    Coleccion.Add(Item)

  End Sub

End Module

 

El ejemplo anterior funciona correctamente tal como se describe, sin embargo como prueba de lo que a veces la lógica te puede llevar a hacer, conviene probarlo comentando la siguiente línea.

 

  Item = new Datos()

 

El resultado es que al recorrer la colección, se muestra solo el último valor introducido en la misma.

Octubre-2010
Pág. 32.1

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies