begin process at 2010 02 10 10:59:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Divers

 > 

Débutants

 > 

Trouver un élément dans un ArrayList


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Trouver un élément dans un ArrayList

jeudi 6 mars 2008 à 17:06:11 | Trouver un élément dans un ArrayList

_Fabien

Rebonjour,

Voilà, je n'arrive pas à trouver/supprimer un élément dans une ArrayList. Ca fait 2 heures que j'épluche MSDN/forum/codes-sources.

Certes, dans MSDN il me donne ceci :
dim myAL AsNew ArrayList()

myAL.Add("The")
myAL.Add("quick")
myAL.Add("brown")
myAL.Add("fox")
myAL.Add("jumped")
myAL.Add("over")
myAL.Add("the")
myAL.Add("lazy")
myAL.Add("dog")

myAL.Remove("lazy")


Sinon dans MSDN, il y a marqué : Cette méthode détermine l'égalité en appelant Object.Equals.

Certes, c'est louable, mais ils auraient pu donner un exemple plus complexe. Voici :

dim myAL AsNew ArrayList()
dim objAdr as new adresse ("13 rue pau Huchon", "06000", "Nice", "France")

myAL.Add(new personne(id, nom, prenom, objAdr)
Etc.(j'ajoute x personnes)
myAL.Remove(objPersonne)

Comment je fais pour utiliser le Remove du ArrayList, autrement dit pour supprimer une personne donnée de l'ArrayList ?

Vous me direz et à raison que je pourrais faire une boucle du genre.

for i=0 to myAL.count-1
   if
myAL(i).id = idPers ou textBoxIdPers.text
     (...)
  end if
next i

ça marcherait, mais je tiens à faire çà propement. Si Remove ou RemoveAt existe ce n'et pas pour rien. Je rencontre le même problème avec la recherche. Au lieu d'utiliser la méthode Contains, j'ai du me résigner à faire une boucle

Bon en attendant, je vais tester Remove sur des objets simples et etudier Object.Equals que j'avais commencé à faire.


_____________________________________________________________
Coder et coder sont 2 choses différentes. La 1ère consiste à arriver au but coûte que coûte. La 2nde est de trouver la solution de manière élégante.
jeudi 6 mars 2008 à 18:39:14 | Re : Trouver un élément dans un ArrayList

keke4483

Est ce que dans ton cas ce ne serait pas mieu de travailler avec une sortedlist afin de profiter de l'index ?

Dim mySL AsNew SortedList()
DimobjAdrAsNewadresse ("13 rue pau Huchon", "06000", "Nice", "France")

mySL.Add("Keke", new personne(id, nom, prenom, objAdr))
mySL.Add("Second", "World")
mySL.Add("Third", "!")

Après pour récupérer ta valeur :


if mySL.ContainsKey("Keke")
objPersonne = mySL("Keke")
end if

En esperant que ca pourra t'aider et que je ne me sois pas planté xD .

ps: msdn : http://msdn2.microsoft.com/fr-fr/library/system.collections.sortedlist(VS.80).aspx

-=KeKe4483=-
vendredi 7 mars 2008 à 10:30:59 | Re : Trouver un élément dans un ArrayList

_Fabien

C'est pas bête, mais je dois travailler avec des ArrayList. Merci quand même Keke  Bon je vais potasser. (j'en baille déjà)

_____________________________________________________________
Coder et coder sont 2 choses différentes. La 1ère consiste à arriver au but coûte que coûte. La 2nde est de trouver la solution de manière élégante.
vendredi 7 mars 2008 à 13:26:01 | Re : Trouver un élément dans un ArrayList

_Fabien

Je sors de MSDN et avec les ArrayList, ce n'est pas la peine de chercher une aiguille dans une botte de fouin : aucune méthode pour çà. Disons que si, mais ça dépend comment ces méthodes sont utilisées (IndexOf, Contains).

J'ai fait plusieurs tests :

(paiement a été importé d'une DLL)
    Sub Main()
        Dim objPmt1 As Paiement
        Dim objPmt2 As Paiement
        Dim alPmt As New ArrayList

        objPmt1 = New Paiement("A", "1") : alPmt.Add(objPmt1)
        objPmt1 = New Paiement("B", "2") : alPmt.Add(objPmt1)
        objPmt1 = New Paiement("C", "3") : alPmt.Add(objPmt1)

        objPmt2 = New Paiement("B", "2")
        'objPmt1 = New Paiement("D", "4")
        'objPmt1 = alPmt(0)
        'objPmt2 = objPmt1
        'MsgBox(alPmt(0).libelle.Contains(objPmt2.libelle).ToString)
        'MsgBox(ReferenceEquals(objPmt2.type, alPmt(1).type)) ' curieux renvoie True
        'MsgBox(ReferenceEquals(objPmt2, alPmt(1))) ' Ici, renvoie False
        'MsgBox(alPmt(0).libelle.Equals(objPmt2.libelle))
        'MsgBox(alPmt.Item(0).GetType.ToString)
        MsgBox(alPmt.IndexOf(objPmt2))
    End Sub

Je m'attendais à ce qu'il renvoie 2 et non -1 (pas trouvé). Si je remplace objPmt2 par objPmt1, comme ceci :

MsgBox(alPmt.IndexOf(objPmt1))

Là ça marche. Après tous les tests réalisés, chaque  item de l'ArrayList (0...N) pointe sur une référence (en mémoire vive ?). Malgré que mon objPmt2 a été défini/instancié de la même façon --> marche pas car adresses différentes. Ca me rapelle le C.
En revanche avec un objPmt2 = objPmt1, ça marche. Sinon, ReferenceEquals(objPmt2.type, alPmt(1).type) --> True marche, mais pas un ReferenceEquals(objPmt2, alPmt(1)) --> False Curieux !

(Bon je parle tout seul ) J'ai appris aussi autre chose en passant :
objPmt2 = objPmt1 (objPmt2 ne pointe pas sur objPmt1 du moins au sens du C). La preuve :

Dim objPmt1 As Paiement
Dim objPmt2 As Paiement

objPmt1 = New Paiement("A", "1")
objPmt2 = objPmt1
objPmt1 = New Paiement("B", "2")


MsgBox(objPmt2.libelle) --> renvoie "A" et non "B". Si c'était comme le C, il aurait renvoyé "B".

Bon passons à autre chose, sauf qi quequ'un a une soluce.

_____________________________________________________________
Coder et coder sont 2 choses différentes. La 1ère consiste à arriver au but coûte que coûte. La 2nde est de trouver la solution de manière élégante.


Cette discussion est classée dans : trouver, arraylist, add, remove, myal


Répondre à ce message

Sujets en rapport avec ce message

Comment ajouter un ArrayList à un autre ArrayList??? [ par Chris_LaFouine ] Je voudrais savoir s'il existe un moyen simple d'ajouter un ArrayList à un autre ArrayList : Dim arr1,arr2 as ArrayList arr2.add("Poulette") arr2.a Comment retourner un Array??? [ par Chris_LaFouine ] Voilà mon problème : j'ai un ArrayList qui contient UNIQUEMENT des String et j'ai une fonction du style : Public Function jackPoulette(ByVal poulet probleme add remove item [ par sauce31 ] Bonjour,Je vous explique mon problème.J'ai deux listbox et deux boutons qui me permettent de faire passer les elements d'une listbox à l'autre?Le prob Trier une arraylist en visual basic [ par magicabdou ] bonjour peut quelqu'un m'aider de trier une arraylist en considérant des valeurs Integer ?? Bug Affichage Pendant le Chargement de DATAGRIDView [ par ssefyou ] bonjour ,j'ai un souci d'affichage pendant  le chargement de ma datagridview http://www.monsterup.com/image.php?url=upload/1241438632129.jpg<a href Datagridview : Occulter/substituer fonction add [ par NARO34 ] Bonsoir,je souhaiterai remplacer la fonction add colonne d'un datagridview.c'est-à-dire remplacer : MonDatagridview.columns.add(ColumnsName, Headertex Variables systeme en VBA [ par cqui789 ] Salut,Ça faisait longtemp que je n'etait pas venu par la... je suis particulierement rouilléJe cherche a utiliser le contenu d'une variable système da Erreur Installation Setup [ par sauce31 ] Bonjour,Après avoir généré le setup sous visaul basic 2008 ( commande générer, publier.....), j'essaye de l'installer sur un autre PC qui n'a pas inst Probleme BDD ACCESS [ par Systech_Systems ] J'utilise cette fonction avec une base de données ACCES connecté à mon appli par l'intermediaire d'une source de donnés avc vb.net ( Tableadpater + bi


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales