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

Email this to someoneShare on Google+Tweet about this on TwitterShare on LinkedInShare on Facebook

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.

Leave a Reply