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

Collection et Stream Java Discussion :

supprimer des doublons dune liste


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Par défaut supprimer des doublons dune liste
    bonjour, j effectue un traitement pour recuperere une liste de comptes de type string, biensur certains comptes sont en double,
    voici le code de construction de ma liste de comptes :
    mais j ai un autre souci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for( Iterator ii=listeCC.getListDonnes().iterator(); ii.hasNext(); ) {
        AttributsCompte = (AttributsCompte )ii.next();
        toto.getNumCompte();
        System.out.println("toto " + toto);
        listeComptes.add(new String(toto.getNumCompte()));
    }

    je recois donc en sortie une liste avec ceci : 2224444 - 222444 - 666789 -666789- 111222

    le problème il faudrait supprimer les doublons de la liste mais je ne sais pas comment faire, pourriez vous m aider?

  2. #2
    Membre éprouvé Avatar de bygui
    Homme Profil pro
    PLM/ALM
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : PLM/ALM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    Bonjour,
    Regarde dans les méthodes existantes de ta liste. Il te suffit sans de faire une comparaison avec .contains() par exemple et d'ajouter que s'il n'existe pas.
    Sinon tu as les TreeMap, qui n'autorise que l'ajout de clés uniques et donc qui t'évitera les doublons

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Par défaut j ai fait ceci
    j ai utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set set = new HashSet() ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    listeComptes.add(new String(toto.getNumCompte()));
    set.addAll(listeComptes);
    distinctList = new ArrayList(set);
    System.out.println("distinctList" + distinctList);
    ca semble focntionner

  4. #4
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Comme le proposait bygui, le plus performant et le plus simple serait de faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for( Iterator ii=listeCC.getListDonnes().iterator(); ii.hasNext(); ) {
        AttributsCompte = (AttributsCompte )ii.next();
        toto.getNumCompte();
        System.out.println("toto " + toto);
        if(!listeComptes.contains(toto.getNumCompte())) {
            listeComptes.add(toto.getNumCompte());
        }
    }

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Par défaut ok merci,
    ca marche aussi.

  6. #6
    Membre chevronné Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Par défaut
    Citation Envoyé par CheryBen Voir le message
    le plus performant et le plus simple serait de faire comme ceci [...]
    Le plus performant ?
    L'opération contains() dans une ArrayList est un algorithme en O(n) alors que dans un HashSet c'est en temps constant O(1). Si la taille de la collection augmente, le HashSet sera plus performant.
    Le plus simple ?
    Un Set est une collection sans doublon alors qu'une List ne l'est pas. Pourquoi ne pas utiliser directement les interfaces de collections les plus adaptées au problème ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Par défaut
    et comment puis-je faire?

  8. #8
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Citation Envoyé par djsnipe Voir le message
    Le plus performant ?
    L'opération contains() dans une ArrayList est un algorithme en O(n) alors que dans un HashSet c'est en temps constant O(1). Si la taille de la collection augmente, le HashSet sera plus performant.
    Le plus simple ?
    Un Set est une collection sans doublon alors qu'une List ne l'est pas. Pourquoi ne pas utiliser directement les interfaces de collections les plus adaptées au problème ?
    Ca me semblait plus performant que d'ajouter tous les éléments à une ArrayList, puis d'ajouter le contenu de cette liste à un HashSet, puis de recréer une ArrayList à partir de ce HashSet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    listeComptes.add(new String(toto.getNumCompte()));
    set.addAll(listeComptes);
    distinctList = new ArrayList(set);
    System.out.println("distinctList" + distinctList);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Expression régulière pour supprimer des doublons
    Par cbroissa dans le forum Langage
    Réponses: 5
    Dernier message: 20/05/2017, 01h59
  2. supprimer des doublons d'une liste
    Par manaliac dans le forum Général Python
    Réponses: 45
    Dernier message: 02/08/2010, 14h52
  3. Réponses: 10
    Dernier message: 20/04/2007, 23h16
  4. [Collections]Supprimer des doublons dans une ArrayList
    Par emie31 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/12/2005, 15h15
  5. Réponses: 2
    Dernier message: 07/07/2004, 17h44

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