CGSI3
Messages postés416Date d'inscriptionvendredi 22 février 2008StatutMembreDernière intervention 7 janvier 2018
-
Modifié par ichiriac le 8/11/2013 à 17:18
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024
-
21 oct. 2013 à 18:20
Bonjour,
''' <summary>
''' Fonction: Retourne La liste des éléments en commun avec la deuxième liste
''' et les déduits de chaque liste les éléments en commun trouvés
''' </summary>
Function CompareArrays(ByRef FirstArray As ArrayList, ByRef SecondArray As ArrayList) As ArrayList
Dim B1 As Array, B2 As Array
B1 = FirstArray.ToArray : B2 = SecondArray.ToArray
' Effectue un regroupement et laisse les éléments non joints
Dim B3 As Array = FirstArray.ToArray.Intersect(B2).ToArray
' Ne retourne que les élément présent dans les 2 listes et la met dans une 3eme liste
'Dim B4 As Array = B1.Intersect(B2).ToArray ' Cette ligne n'est pas possible ????
' Ne retourne que les élément présent dans la première liste sans doublon sur la 3 eme liste
Dim G1 As ArrayList = New ArrayList(FirstArray.ToArray.Except(B3).ToArray)
' Ne retourne que les élément présent dans la seconde liste sans doublon sur la 3 eme liste
Dim G2 As ArrayList = New ArrayList(SecondArray.ToArray.Except(B3).ToArray)
Dim G3 As New ArrayList(B3)
G1.Sort() : G2.Sort() : G3.Sort()
FirstArray = G1.Clone : SecondArray = G2.Clone
Return G3
End Function
Je vous joins cette fonction que j'ai réalisé récemment et qui fonctionne pour vous poser 4 questions:
Décelez vous des erreurs dans ce code ou des améliorations possible ?
Pourquoi l'affectation variable B3 fonctionne et non celle de la variable B4 ?
Existe t'il un paramétrage de la fonctions intersect ?
Car cette fonction renvoie uniquement une égalité que si les 2 éléments sont identique en respectant la casse (Majuscule ou minuscule)
J'aimerai pouvoir ajouter quelques options a cette fonction.
L'utilisation de Option Compare Text ou Option Compare Binary aurait t elle un impact sur cette fonction?
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 21 oct. 2013 à 16:36
Bonjour CGSI3
Je me suis permis de recopier le code qui était illisible:
''' <summary>
''' Fonction: Retourne La liste des éléments en commun avec la deuxième liste
et les déduits de chaque liste les éléments en commun trouvés
''' </summary>
Function CompareArrays(ByRef FirstArray As ArrayList, ByRef SecondArray As ArrayList) As ArrayList
' Effectue un regroupement et laisse les éléments non joints
Dim B3 As Array = FirstArray.ToArray.Intersect(B2).ToArray
'Ne retourne que les élément présent dans les 2 listes et la met dans une 3eme liste
'Dim B4 As Array = B1.Intersect(B2).ToArray
' Cette ligne n'est pas possible ????
' Ne retourne que les élément présent dans la première liste sans doublon sur la 3 eme liste
Dim G1 As ArrayList = New ArrayList(FirstArray.ToArray.Except(B3).ToArray)
' Ne retourne que les élément présent dans la seconde liste sans doublon sur la 3 eme liste
Dim G2 As ArrayList = New ArrayList(SecondArray.ToArray.Except(B3).ToArray)
Concernant ce post, bcp de chose m'intrigue dans la manière de gérer des ArrayList
Tout d'abord je me rend compte qu'en effectuant .ToArray a un arraylist on a une liste de fonctions qui ne sont pas référencés dans un array normal.
Ceci me fait dire qu'il existe une multitude de chose que nous n'utilisons pas.
J'effectue cette recherche, de manière également a savoir si ce chemin de travail permet d'aller + vite qu'un travail par boucle sur un array ou une liste.
Ainsi pour supprimer les doublons j'ai fabriqué cela
Public Function Kill_Doublon(ByRef FirstArray As ArrayList) As ArrayList ' Supprime les doublons d un ArrayList Dim SansDoublons As ArrayList = New ArrayList(FirstArray.ToArray.Distinct.ToArray) Return SansDoublons End Function
Aussi je mettrais comme remarque que ce genre de fonction doit normalement gérer des chaines de caractères mais également tout type d'objet (non vérifié pour le moment)
J'ajouterai également qu'un arrayList est fort pratique pour initialiser un Listbox ou Combobox avec sa propriétée .DataSource
et qu'en poussant un peu avec la propriétée Tag on peut travailler avec des arraylist d'objet de manière très intéressante. (je détail pas car c'est pas le sujet)
(Quand est ce qu'ils remettrons nos avatars ? j'ai l'air tout nu sur ce post lol
... et élargir un peu cette colonne car c'est pas large, )
--
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 21 oct. 2013 à 18:20
Oui je suis d'accord avec toi, ce nouveau site nous perturbe. Nous avons perdu nos marques. Les balises de code n'ont pas de retour à la ligne en ce moment. Je l'ai signalé sur ce post.
Pour ce qui est des ArrayList, je ne suis pas un spécialiste. Tu devrais te tourner vers ucfoutu qui lui est une référence dans ce domaine entre autre.