[DOTNET] ArrayList d'OBJET -> Supprimer doublons

ArrayList d'OBJET -> Supprimer doublons [DOTNET] - C#/.NET managed - Programmation

Marsh Posté le 12-07-2008 à 19:25:47    

Bonjour :)
 
J'ai pas mal chercher sur google, et dans ma petite tête mais je bute sur ce problème
 
J'ai une Arraylist d'objet et j'aimerais supprimer les doublons en la mettant dans une autre par exemple
 
Cependant Impossible d'y arrivé, j'ai tenter la méthode avec Arraylist.Contains, en redefinissant le Equals mais sa ne marche toujours pas
 
Voici le bout de code :
 

Code :
  1. ArrayList main_finale_unique = new ArrayList();
  2. foreach (Carte c2 in main_finale)
  3.             {
  4.                 if (!main_finale_unique.Contains(c2))
  5.                 {
  6.                     main_finale_unique.Add(c2);
  7.                 }
  8.             }


 
Et dans la classe Carte
 

Code :
  1. public bool equals(Object obj)
  2.            {
  3.                return this._valeur == ((Carte)obj).getValeur();
  4.            }


 
Il m'ajoute tout les élements de main_final dans main_final_unique qu'ils soit identiques ou pas (même attributs valeur) :(
 
Je ne comprend vraiment pas :/

Reply

Marsh Posté le 12-07-2008 à 19:25:47   

Reply

Marsh Posté le 12-07-2008 à 20:23:36    

Oui autant pour moi , je m'en étais rendu compte et oublié de le poster
 
J'ai bien ajouté override de la même manière que toi, mais rien à faire les doublons ne dégage pas, sa en devient inquiétant

Reply

Marsh Posté le 12-07-2008 à 20:26:39    

Mais qu'est ce que je suis con !
 
C'est tout simplement que je faisait le mauvais traitement dans mon equals :lol:
 
Je viens de perdre 2heures pour rien :p
 
J'espere au moins que sa pourrais en aidé d'autre ;)
 
Thx :jap:

Reply

Marsh Posté le 13-07-2008 à 20:51:24    

attention de bien reféfinir Equals et GetHashCode, sinon ça reste dangereux.

Reply

Marsh Posté le 13-07-2008 à 22:03:11    

Si je ne redéfinit pas GetHashCode quel sont les conséquences ? :??:

Reply

Marsh Posté le 14-07-2008 à 10:43:20    

c'est .NET qui décide comment il implémente cette méthode.  
Dans le cas ou tu ajoutes tes propres objets à la collection, c'est ultra foireux. C'est ultra conseillé de fournir son implémentation sur base des datas contenu dans ton objet afin d'être sûre de pouvoir identifier clairement un doublon.

Reply

Marsh Posté le 14-07-2008 à 12:41:41    

Ha ok merci :jap:

Reply

Marsh Posté le 15-07-2008 à 14:10:54    

Faut pas implémenter IComparable et utiliser plutôt Compare() ?

Reply

Marsh Posté le 15-07-2008 à 17:43:33    

euh la tu me fais hésité. Je crois que les deux peuves être utilisés.


Message édité par moi23372 le 15-07-2008 à 17:46:21
Reply

Marsh Posté le 15-07-2008 à 18:40:43    

MagicBuzz a écrit :

Faut pas implémenter IComparable et utiliser plutôt Compare() ?


La I. La bidouille de "si y a compare ça suffit", c'est bien à l'image de .net.
La version generics bien sur.


Message édité par Taz le 15-07-2008 à 18:42:03
Reply

Marsh Posté le 15-07-2008 à 18:40:43   

Reply

Marsh Posté le 16-07-2008 à 11:26:58    

je viens de vérifier mes bouquins, les deux fonctionnent.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
Reply

Marsh Posté le 16-07-2008 à 11:41:52    

moi23372 a écrit :

je viens de vérifier mes bouquins, les deux fonctionnent.


oui mais c'est un peu ça le problème: y a pas trop de raison pour cette bidouille de "s'il y a un compareTo..."

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed