cs_emmanuel9
Messages postés903Date d'inscriptionmercredi 23 février 2005StatutMembreDernière intervention16 juin 2010
-
22 févr. 2006 à 13:39
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 2008
-
22 févr. 2006 à 16:40
Bonjour à tous,
J'ai deux ArrayList d'objet Personne avec nom,prenom,etc...
Et je voudrais comparer la premiere liste à la seconde.
Comment faire detecter si les deux sont identiques ou non sans faire deux boucle for imbriqué, c'est à dire je commence à lire la permiere personne de la permiere liste et je le compare avec toutes les autres personnes de la secondes listes etc... Si il y a 1000 personne, ca me fera 1000X1000 = 1 million de passage....
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 22 févr. 2006 à 13:57
Il faudrait savoir si tu aimerais qu'elles soient identiques au niveau du contenu global (les memes personnes mais pas forcément dans le meme ordre dans les 2 arraylist), ou si elles sont strictement identiques.
Si c'est le second cas, il suffit simplement de voir si l'element i de l'arraylist 1 est le memes que l'element i de l'arraylist 2. Donc pas de boucle imbriquée, simplement un passage de for()
Enfin deja, premiere chose a comparer: leur propriété Count. Si elle est différente, l'ArrayList ne sera pas identique.
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 22 févr. 2006 à 15:40
Si tu dois comparer plusieurs propriétés, je pense que tu ne vas pas avoir le choix...
Deja il faudra implementer l'interface IComparable a ta classe Personne, et y faire ton test de comparaison entre les objets.
Et ensuite, boucle for (ou foreach) imbriquées. Des que pour une occurence de ta boucle "englobante", tu ne trouves pas l'equivalent dans ta boucle "englobée", ca veut dire qu'il y a une différence, et tu sors de tes boucles (pour pas que cela ne continue pour rien)
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 22 févr. 2006 à 16:26
Petit essai rapide
<HR>
using System;
using System.Collections;
namespace ConsoleApplication1
{
class
Program
{
static
void Main(
string[] args)
{
ArrayList a1 =
new
ArrayList();
ArrayList a2 =
new
ArrayList();
a1.Add(
new
Personne(
"John",
"Doe"));
a1.Add(
new
Personne(
"Jane",
"Doe"));
a2.Add(
new
Personne(
"Jane",
"Doe"));
a2.Add(
new
Personne(
"John",
"Does"));
On a une classe personne, avec une méthode CompareTo qui recoit un object (casté en personne ensuite) en parametre, et qui renvoit 1 si les propriétés Nom et Prenom des personnes sont strictement identiques (a toi de voir pour les min/maj), 0 sinon.
Ensuite, eh bien ce sont 2 boucles imbriquées dans le Main, qui comparent les valeurs contenues dans les ArrayLists, et une variable booleen qui prend true quand 2 valeurs identiques sont trouvées, false autrement.
Quand le bool est a true, on continue jusqu'a qu'on ait vérifié toutes les valeurs d'un ArrayList, sinon, il a une différence, on sort de la boucle.
Verifie quand meme au prealable si tes listes ont le meme nombre d'elements avant d'entrer dans ces boucles.
cs_emmanuel9
Messages postés903Date d'inscriptionmercredi 23 février 2005StatutMembreDernière intervention16 juin 20102 22 févr. 2006 à 14:04
Ben en faite les listes font exactement la même taille mais c'est au niveau des propriétés (nom, prénom etc...) qu'il peut y avoir des différences. Sinon chaque objet personne possède une propriété Id qui sert à l'identifier . L'élement à l'index 0 de la liste 1 aura l'id 1 et l'élement à l'index 0 de la liste 2 aura l'index 1. C'est juste au niveau des propriété qu'il faudrait que je détecte les differences.
Exemple
Liste 1 | Liste 2
id : 1 / nom : jean id : 1 / nom : jeana
id : 2 / nom : claude id : 2 / nom : claude
ici les listes ne sont pas identiques a cause de jean et jeana
Vous n’avez pas trouvé la réponse que vous recherchez ?