Sie sind auf Seite 1von 5

7.

LA CLASE ARRAYLIST
Esta clase permite la creación y manipulación de arrays cuyo tamaño puede ser modificado
dinámicamente.
Para crear un ArrayList se pueden utilizar los siguientes métodos
a) Crear una lista sin elementos.
Dim Empleados As New ArrayList()
b) Crear una lista con un tamaño inicial.
Dim Empleados As New ArrayList(3)
c) Crear una lista e inicializar sus elementos, para ello debemos utilizar la palabra New
seguida del tipo de dato del que vamos a crear la colección y los paréntesis, y por último
cerrar entre llaves los valores de la colecciones.
Dim Caracteres As New ArrayList(New String() {"a", "b", "c"})
Al crear un ArrayList no es necesario especificar su dimensión y ésta puede ser modificada
en cualquier momento. Un ArrayList tiene por defecto el tamaño necesario para almacenar
16 ítems.

MÉTODOS
• Add(oObject): Inserta el objeto oObject al final del ArrayList. Los valores que
espera recibir un ArrayList son del tipo genérico Object, por lo que podemos
insertar en el mismo array valores de diferentes tipos de dato. Devuelve el valor
del índice donde se insertó el objeto
• AddRange(colección): Agrega una colección (array o ArrayList) de objetos al final
de la colección.
• InserRange(index,colección): Agrega una colección (array o ArrayList) de objetos
a partir de la posición index del ArrayList.
• Contains(oObject): Devuelve true si existe el elemento oObject y false en caso
contrario.
• Insert(index,oObject): Inserta un elemento en la posición del ArrayList indicado
por index.
• Remove(oObject): Elimina la primera instancia que coincida con el parámetro
oObject, en el caso de haber más de una, la operación sólo se produce sobre la
primera que se localiza.
• RemoveRange(startIndex, count): Elimina un número de elementos igual a count
a partir del índice startIndex.
• GetRange(index,count): Devuelve un ArrayList con los un número de elementos
que se corresponde con el parámetro count a partir del índice indicado por
index.
• Repeat(ítem,count): Introduce en el ArrayList el elemento ítem un número de
veces que se corresponde con count.
1
• Reverse(): Invierte el orden de los elementos del ArrayList.
• IndexOf(object): Devuelve la posición donde está el objeto, comenzando la
búsqueda por el índice 0.
• LastIndexOf(object): Devuelve la posición donde está el objeto, comenzando la
búsqueda por la última posición.

RECORRER Y OBTENER VALORES DE UN ARRAYLIST


Se puede acceder a un elemento del ArrayList utilizando sus índices, que comienzan en 0.
Ejemplo: Para mostrar por pantalla el elemento tercero de un ArrayList llamado aCoches,
que contiene string de marcas de coches, se utilizaría el siguiente método:
Console.WriteLine(“El tercer elemento es “,aCoches(4))
Para recorrer un ArrayList 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.
Ejemplo: Código que recorre los elementos de un ArrayList
' crear un ArrayList
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()

CAPACIDAD Y VALORES EN UN ARRAYLIST


Cuando manipulamos un objeto ArrayList debemos distinguir entre su capacidad y los
valores asignados. La capacidad de un ArrayList hace referencia al número de elementos del
array subyacente que contiene este objeto, mientras que los valores asignados se refieren a
aquellos elementos del array a los que se ha asignado valor mediante métodos como Add( )
o AddRange( ). Podemos obtener esta información a través de las propiedades Capacity y
Count del objeto. Si añadimos las siguientes líneas al anterior ejemplo, visualizaremos estos
datos del objeto.
Ejemplo: Cantidad y capacidad de un ArrayList llamado alLetras
Console.WriteLine("Valores asignados al array: {0}", alLetras.Count)

2
Console.WriteLine("Capacidad del array: {0}", alLetras.Capacity)
La capacidad es un aspecto de la clase ArrayList que mejora el rendimiento a la hora de
añadir o eliminar elementos del array. Analicemos esta característica con más detenimiento:
En primer lugar, todo objeto ArrayList dispone de una propiedad llamada _items,
conteniendo el array que internamente gestiona los valores asignados. Esta es una
propiedad que no puede manipular el programador, pero que puede visualizar a través del
depurador, abriendo la ventana Locales y expandiendo el contenido de un objeto ArrayList,
como muestra la siguiente imagen.

Cuando creamos un ArrayList con un tamaño como el del ejemplo anterior, la acción de
añadir un valor al objeto no redimensiona el array, puesto que ya está creado con un
tamaño determinado, sino que asigna un valor al siguiente elemento libre que no hubiera
sido previamente asignado. Veámoslo en el siguiente esquema.

Este comportamiento del objeto tiene la ventaja de que mejora el rendimiento y optimiza
recursos, puesto que cada vez que añadimos o eliminamos valores, el array n_items o
siempre tiene que ser redimensionado.
¿Qué sucede, sin embargo, cuando se han añadido valores y el array está completo?, pues
que el objeto ArrayList detecta esta situación y en la siguiente ocasión en que se añade un
nuevo valor, automáticamente se redimensiona duplicando el número de elementos inicial
que contenía. Veamos de nuevo un esquema de funcionamiento.

En el caso que muestra la anterior imagen, después de añadir la letra m al objeto, la


propiedad Capacity devolvería 12 y la propiedad Count devolvería 9
3
CONVERSIONES DE TIPO
En muchas ocasiones un objeto de un tipo está encapsulado dentro de un objeto genérico
Object. Por ejemplo, esto ocurre en el parámetro sender de los procedimientos detectores
de eventos, este parámetro es de tipo Object y contiene el objeto del cual depende el
evento, para acceder a la instancia del objeto encapsulada dentro de sender debemos
efectuar una conversión de tipos o modelado utilizando el método DirectCast() o Ctype().
• DirectCast (miObjeto, tipo_a_convertir): este método convierte miObjeto en
tipo_a_convertir. DirectCast requiere una relación de herencia o de
implementación entre los tipos de datos de los dos argumentos. Esto significa
que un tipo debe heredar de otro o implementar otro. Por ejemplo se puede
convertir un elemento de un ArryList que son todos del tipo Object en el tipo
específico que contiene.
• Ctype (expresion, tipo_a_convertir): Devuelve el resultado de convertir
explícitamente una expresión a un tipo de datos. No es necesario que expresión
sea del tipo a convertir ni herede de él, tan sólo que su valor esté dentro del
rango permitido por el tipo_a_convertir se produce una excepción. Por ejemplo
se puede convertir un valor de tipo Integer a uno de tipo Double pues el tipo
Double incluye los valores de Integer.
La instrucción DirectCast es más rápida, en general, que Ctype, pero al utilizar DirectCast
debemos estar seguros de que el tipo a convertir hereda del tipo actual sino dará una
excepción.
Todos los elementos de un ArrayList son de tipo Object, y esto permite que podamos
introducir elementos de cualquier tipo, pues todos los tipos son heredados de Object.
Para confirmar si un objeto pertenece a un tipo concreto podemos utilizar el método
DirectCast al que se le debe proporcionar una expresión como primer argumento y un tipo
para convertir como segundo argumento.
Ejemplo
Código para extraer un elemento del ArrayList Personal que contiene elementos de la
estructura Empleado
‘Extraer el elemento 0 del ArrayList para mostrarlo en un TextBox (txtN)
txtN.Text= DirectCast (Personal(0),Empleado).Nombre

CONOCER EL TIPO DE UN OBJETO


Si queremos saber si un objeto pertenece a un tipo de datos se puede utilizar la expresión
Ejemplo
Private Sub BtnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles BtnSalir.Click

….
End Sub

4
If TypeOf sender Is Windows.Forms.Button Then
MsgBox("es un boto")
End If

CARGAR EL ARRAYLIST EN UN ComboBox


Para cargar un objeto ArrayList en un ComboBox se debe asignar el objeto a la propiedad
DataSource del control.
Para indicar que campo del objeto almacenado en un ArrayList es el que se debe visualizar
debo utilizar la propiedad DisplayMember del ComboBox. El elemento que se asigna a la
propiedad DisplayMember debe ser el nombre de una Property accesible de la clase a la que
pertenecen los objetos que contiene el ArrayLis.
Ejemplo
'Método para cargar un combobox con el ArrayList
Public Sub CargarContenedor(ByRef control As System.Windows.Forms.ComboBox)
'Borro la fuente origen de datos
control.DataSource = Nothing
'Establezco como fuente oriten de datos el ArrayList miLista
control.DataSource = miAlmacen
'Le indico que Property del objeto del ArrayList es el
‘que debe mostrarse en el combobox
control.DisplayMember = "Nombre"
End Sub
1. Realizar una estructura de formularios MDI para gestionar las entradas de una agenda.
La aplicación debe permitir:
• Agregar entradas
• Eliminar entradas
• Modificar los entradas
• Buscar una entradas por nombre. Para esta operación crear un ComboBox.
Cada operación debe corresponderse con una opción de menú y con una ventana diferente.

Das könnte Ihnen auch gefallen