ArrayList i indexOf, trobem objectes dins d’un array en vb.net

En aquest post explico com trobar objectes dins d’un array o cadena d’objectes en vb.net

Anem a suposar que tenim un grup d’alumnes que els introduïm en un array o un vector, i ens interessa buscar un alumne en concret d’aquesta llista, una manera de fer-ho seria fent un recorregut per tot el vector fins que trobem l’alumne que busquem, una altra molt més fàcil és utilitzar el mètode “indexOf” de la classe ArrayList, on ens tornarà la posició exacta del l’alumne que estem buscant, d’aquesta manera amb ArrayList i indexOf, trobem objectes dins d’un array a vb.net.

Definició de la classe alumne

Anem a definir la classe alumne amb les seves propietats habituals, nom, cognoms, adreça, etc., dins de la classe sobreescriurem el mètode “Equals” i dins d’aquest mètode retornarem true o false si l’objecte propi de la classe és igual al que rebem del mètode, podent realitzar la comparació amb els camps que ens interessen de la classe alumne, de la següent 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

Aquest mètode sobreescrit rep com a paràmetre “obj2” de tipus object, aquest objecte amb tota seguretat de tipus alumne és comparat amb els camps de la nostra classe, aquí es pot veure que es compara amb el idAlumne, però es podria utilitzar els altres camps de l’objecte , nom, cognoms, etc, retorna true si és el mateix objecte o false si no ho és.

Aquesta implementació es pot utilitzar com a rutina habitual en la declaració de totes les classes d’identitat del nostre programa, després es pot utilitzar o no si és necessari.

Exemple de ArrayList i indexOf, trobem objectes dins d’un array en vb.net

Anem a veure com podem trobar un alumne dins d’un ArrayList després d’haver sobreescrit el mètode “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 l’exemple hem declarat 7 alumnes i els hem afegit en un array, després busquem en cas de fallida amb el mètode “indexOf“, l’alumne amb identificador 31 i ens retorna la posició 4.

Conclusions

Una manera molt fàcil i ràpida de trobar objectes dins d’un array és sobreescriure el mètode “Equals” dins de la classe, d’aquesta manera trobar objectes coincidents dins d’un array amb gran quantitat de dades es converteix en una tasca molt senzilla.

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.