Archivo por meses: noviembre 2014

ArrayList y indexOf, encontramos objetos dentro de un array en vb.net

En este post voy a explicar cómo encontrar objetos dentro de un array o cadena de objetos en vb.net

Vamos a suponer que tenemos un grupo de alumnos que los introducimos en un array o un vector, y nos interesa buscar un alumno en concreto de esa lista, una manera seria haciendo un recorrido por todo el vector hasta que encontremos el alumno que busquemos, otra mucho más fácil es utilizar el método “indexOf” de la clase ArrayList, donde nos devolverá la posición exacta dentro del array del alumno que estamos buscando, de esta manera con ArrayList y indexOf, encontramos objetos dentro de un array en vb.net.

Definición de la clase alumno

Vamos a definir la clase alumno con sus propiedades habituales, nombre, apellidos, dirección, etc, dentro de la clase sobrescribimos el método “Equals” y dentro de este método devolveremos true o false si el objeto propio de la clase es igual al que recibimos del método, pudiendo realizar la comparación con los campos que nos interesen de la clase alumno, de la siguiente manera:

Public Class alumne
    Inherits persona
    Private IDALUMNE As Integer
    Public Sub New(ByVal sNom As String, ByVal sIDALUMNE As Integer)
        MyBase.New(sNom)
        IDALUMNE = sIDALUMNE
    End Sub
    Public Function getidAlumne() As Integer
        Return IDALUMNE
    End Function
    Overrides Function Equals(ByVal obj2 As Object) As Boolean      '         
        If Not obj2 Is Nothing Then
            If Not obj2 Is System.DBNull.Value Then
                Dim c As alumne = obj2
                If c.getidAlumne = getidAlumne() Then
                    Return True
                End If
            End If
        End If
        Return False
    End Function
End Class

Este método sobrescrito recibe como parámetro “obj2” de tipo object, este objeto con toda seguridad de tipo alumno es comparado con los campos de nuestra clase, aquí se puede ver que se compara con el idAlumne, pero se podría utilizar los otros campos del objeto, nombre, apellidos, etc, devuelve true si es el mismo objeto o false si no lo es.

Esta implementación la podemos utilizar como rutina habitual en la declaración de todas las clases de identidad de nuestro programa, luego se puede utilizar o no si es necesario.

Ejemplo ArrayList y indexOf, encontramos objetos dentro de un array en vb.net

Vamos a ver cómo podemos encontrar un alumno dentro de un arrayList después de haber sobrescrito el método “Equals”:

Dim a As alumne
Dim array As ArrayList = New ArrayList

a = New alumne("Jordi", 12) 'Vamos creando alumnos
array.Add(a)  'añadimos el alumno en el array
a = New alumne("Anna", 24)
array.Add(a)
a = New alumne("Joan", 32)
array.Add(a)
a = New alumne("Carme", 14)
array.Add(a)
a = New alumne("Josep", 31)
array.Add(a)
a = New alumne("Marc", 20)
array.Add(a)
a = New alumne("Mireia", 22)
array.Add(a)

Dim posicio As Integer
posicio = array.IndexOf(New alumne("", 31)) 'Busco el alumno con identificador 31 y me devuelve la posicion 4
posicio = array.IndexOf(New alumne("", 12)) 'Busco el alumno con identificador 12 y me devuelve la posicion 0

En el ejemplo hemos declarado 7 alumnos y los hemos añadido en un array, luego buscamos dentro del array con el método “indexOf”, el alumno con identificador 31 y nos devuelve la posición 4.

Conclusiones

Una manera muy fácil y rápida de encontrar objetos dentro de un array es sobrescribir el método “Equals” dentro de la clase, de esta manera encontrar objetos coincidentes dentro de un array con gran cantidad de datos se convierte en una tarea muy sencilla.