COLECCIONES

martes, 13 de julio de 2010
Una colección es un objeto que internamente gestiona un array, pero que está preparado, dependiendo del tipo de colección, para manejar el array que contiene de una manera especial; podríamos definirlo como un array optimizado o especializado en ciertas tareas.

Entre las clases más significativas de System.Collections, podemos destacar las siguientes:

• ArrayList. Proporciona una colección, cuyo array es redimensionado dinámicamente.

• Hashtable. Las colecciones de este tipo, contienen un array cuyos elementos se basan en una combinación de clave y valor, de manera que el acceso a los valores se facilita, al realizarse mediante la clave.

• SortedList. Consiste en una colección ordenada de claves y valores.

• Queue. Representa una lista de valores, en el que el primer valor que entra, es el primero que sale.

• Stack. Representa una lista de valores, en el que el último valor que entra, es el primero que sale.


Para hacer uso de colecciones en una aplicación VB.NET creada desde VS.NET, no es necesario importar este espacio de nombres, ya que como habrá observado el lector en ejemplos anteriores, el propio IDE incluye por defecto la importación del espacio System al proyecto.


Por ahora solo veremos la clase ARRAYLIST mas adelante el resto.


ArrayList

Los objetos de tipo colección creados con esta clase, implementan un array cuyo número de elementos puede modificarse dinámicamente.

Para instanciar un ArrayList veamos el  siguiente codigo:

Sub Main()

' crear una lista sin elementos
Dim alEstaciones As New ArrayList()

' crear una lista indicando el número de elementos
' pero sin darles valor

Dim alDatos As New ArrayList(3)

' crear una lista utilizando una colección dinámica
Dim alLetras As New ArrayList(New String() {"a", "b", "c"})

End Sub
 
 
 
Agregar valores a un ArrayList

Una vez creado un ArrayList, podemos utilizar algunos de los métodos indicados a continuación para añadir valores a la colección.

• Add(Valor). Añade el valor representado por Valor.

• AddRange(Colección). Añade un conjunto de valores mediante un objeto del interfaz ICollection, es decir, una colección dinámica creada en tiempo de ejecución.

• Insert(Posición, Valor). Inserta el valor Valor en la posición Posición del array, desplazando el resto de valores una posición adelante.

• InsertRange(Posición, Colección). Inserta un conjunto de valores mediante una colección dinámica, a partir de una posición determinada dentro del array.

• SetRange(Posición, Colección). Sobrescribe elementos en un array con los valores de la colección Colección, comenzando en la posición Posición.

Ejemplo:


Sub Main()

Dim alDatos As New ArrayList(10)

alDatos.Add("a")

alDatos.AddRange(New String() {"b", "c", "d"})

Console.WriteLine("ArrayList después de usar Add() y AddRange()")

RecorrerAList(alDatos)

alDatos.Insert(2, "hola")

Console.WriteLine("ArrayList después de usar Insert()")

RecorrerAList(alDatos)

alDatos.InsertRange(1, New Integer() {55, 77, 88})

Console.WriteLine("ArrayList después de usar InsertRange()")

RecorrerAList(alDatos)

alDatos.SetRange(3, New String() {"zzz", "yyy"})

Console.WriteLine("ArrayList después de usar SetRange()")

RecorrerAList(alDatos)

Console.ReadLine()

End Sub



Private Sub RecorrerAList(ByVal alValores As ArrayList)

Dim oEnumerador As IEnumerator = alValores.GetEnumerator()

While oEnumerador.MoveNext()

Console.WriteLine("Valor: {0}", oEnumerador.Current)

End While

Console.WriteLine()

End Sub
 
 
Recorrer y obtener valores de un ArrayList

Para recorrer un array podemos emplear la técnica habitual del bucle For...Next y la propiedad Count del objeto ArrayList, que devuelve el número de elementos que tiene el objeto; o bien podemos usar un objeto del interfaz IEnumerator, proporcionado por el método GetEnumerator( ), mucho más simple de recorrer.

Ejemplo:


Sub Main()


' crear ArrayList y añadir valores

Dim alLetras As New ArrayList(6)

alLetras.Add("a")

alLetras.AddRange(New String() {"b", "c", "d"})

' recorrer con un bucle For y usando la propiedad Count,

' tener en cuenta que al ser cero el primer índice del array,

' tenemos que restar uno a la propiedad Count

Console.WriteLine("Recorrer objeto ArrayList con bucle For")

Dim iContador As Integer

For iContador = 0 To (alLetras.Count - 1)

Console.WriteLine("Elemento actual {0}, valor: {1}", _

iContador, alLetras(iContador))

Next
Console.WriteLine()

' recorrer el array con un enumerador

Console.WriteLine("Recorrer objeto ArrayList con un enumerador")

Dim oEnumerador As IEnumerator

oEnumerador = alLetras.GetEnumerator()

While oEnumerador.MoveNext()

Console.WriteLine("Elemento de la lista: {0}", oEnumerador.Current())

End While

Console.ReadLine()

End Sub

0 comentarios:

Publicar un comentario