IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment supprimer les doublons d'une Arraylist?


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 30
    Par défaut Comment supprimer les doublons d'une Arraylist?
    Bonjour à tous,

    Comment éviter les doublons dans une Arraylist d'objet ?

    Quand je parle de doublon c'est deux objets avec les mm propriétés et les mm valeurs de celles-ci.
    Le contains ne fonctionne pas apparemment car il compare par référence et dans l'absolue même si l'objet comporte deux propriétés et quelles sont identique il sagit quand mm de deux instances différentes.

    Alors que faire ? obligé de faire un parcours de toute la arraylist et comparer si il y a pas un objet avec les mm propriétés que celui que l'on veux ajouté ? y'a pas mieux ca parait bidouille un peu non ....

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Tu peux faire une fonction déléguée pour comparer les éléments de ton tableau. Cela peut être consommateur de ressources si ton tableau est grand.

    Si les objets sont serialisables, tu peux faire un dictionnaire dont l'index sera le résultat de l'encryptage MD5 de l'élément serialisé. A l'origine, MD5 sert à comparer des versions de fichiers. Le resultat de l'encodage d'un fichier est une chaine de 32 caractères. Cette chaine est différente quand tu changes ne serait-ce qu'une virgule dans un roman de 500 pages. L'avantage du dictionnaire c'est qu'il ne te laissera pas insérer un élément don la clef existe déjà. C'est plus rapide que de scanner un tableau par le code.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Salut,
    en principe il te suffit de surcharger les méthodes Equals() et GetHashCode(), dont se sert l'arraylist pour comparer les objets. Sans quoi, il me semble qu'il compare leurs références.

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Tu peux aussi passer par une List<T> (arraylist est deprecated)

    Et il est possible de faire un distinct sur List mais je ne sais plus si c'est a partir de 3.0 ou 3.5

Discussions similaires

  1. Comment supprimer les doublons
    Par djelloulc dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 17/09/2013, 14h30
  2. [AC-2007] Comment supprimer les doublons d'une requêtes
    Par mbo2 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 28/04/2013, 19h19
  3. Comment supprimer les doublons d'une table?!
    Par JauB dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/01/2006, 08h48
  4. [vbexcel]Comment supprimer les doublons dans une combobox?
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 24/11/2005, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo