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

Langage Java Discussion :

problème avec la suppression des doublons dans arraylsit


Sujet :

Langage Java

  1. #1
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut problème avec la suppression des doublons dans arraylsit
    bonjour mes amis
    j'ai un problème que je n'arrive pas a le résoudre
    j'ai une liste A={a,b,c}
    et j'ai fait la combinaison entre les élements de la lsite A alors j'aurais une liste F{ab,ac,ba,bc,ca,cb} voila la parite qui a fait ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     ArrayList F= new ArrayList ();
     for (int i=0;i<A.size();i++){
     for (int j = 0; j < A.size(); j++) {
     String Q1=A.get(i).toString();
     String Q2=A.get(j).toString();
     if (Q1.equals(Q2)==false){
     String  Q3=Q1.concat(Q2);
     F.add(Q3);
    }
    }
    }
    ce que je cherche de supprimer les éléments de la liste f alors j'aurais seulemtn COLOR="Red"]{ab,ac,bc}[[/COLOR]ça veut dire je considére ba,ca,cb des doublons par exempel ab et ba les memes alors je supprime ba

    merci mes amis de bien vouloir m'aider

  2. #2
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Points : 37
    Points
    37
    Par défaut
    Tu peux prendre le probleme autrement et ne considerer qu'un sous-ensemble de A (au lieu de A completement) pour chaque element de A.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     ArrayList F= new ArrayList ();
     for (int i=0;i<A.size();i++){
       for (int j = i + 1; j < A.size(); j++) {
         String Q1=A.get(i).toString();
         String Q2=A.get(j).toString();
         if ( ! Q1.equals(Q2) ){
           String  Q3=Q1.concat(Q2);
           F.add(Q3);
         }
      }
    }

  3. #3
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    merci mon ami mais je suis déçu car comment la solution est simple que je n'arrive pas a la trouver
    désolé encore mon amis est ce que c'est possible de mettre ça dans une méthode car j'ai besoin a chaque fois de la faire appeller comment la déclarer
    merci encore

  4. #4
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par ulysse031
    désolé encore mon amis est ce que c'est possible de mettre ça dans une méthode car j'ai besoin a chaque fois de la faire appeller comment la déclarer
    merci encore
    Tu ne trouves pas que tu abuses un peu?
    Dès que tu rencontres le moindre problème sur comment écrire une parenthèse, comment écrire une méthode, etc... tu fais un post!

  5. #5
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    sinon tu crées un type d'objet à toi et tu lui mets un equals (et hascode) qui va bien. C'est ce type d'objet que tu mets dans la liste.

    De plus tu pourrais utiliser un Set combiné avec ce type d'objet pour ne jamais avoir de doublons ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  6. #6
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    mais désolé mes amis ce que je cherche c'est faire par exemple
    j'ai une liste ab,ac,bc,bd,cd j'aurais une liste abc,bcd

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par ulysse031
    mais désolé mes amis ce que je cherche c'est faire par exemple
    j'ai une liste ab,ac,bc,bd,cd j'aurais une liste abc,bcd
    Désolé mon ami, mais ela n'a rien à voir avec la suppression de doublons... et personnellement je ne comprend pas la logique derrière cette "transformation"...

    sans explications claires tu n'auras pas de réponses claires...

    a++

  8. #8
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    je suis d'accord avec toi mon ami
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ArrayList F= new ArrayList ();
     for (int i=0;i<A.size();i++){
       for (int j = i + 1; j < A.size(); j++) {
         String Q1=A.get(i).toString();
         String Q2=A.get(j).toString();
         if ( ! Q1.equals(Q2) ){
           String  Q3=Q1.concat(Q2);
           F.add(Q3);
         }
      }
    }
    cette méthode par exemple marche seulment si j'ai une liste qui contient {a,b,c} alors j'aurais une liste F {ab,ac,bc} mais si j'ai une liste {ab,ac,bc,bd,cd} et je voulais faire la combinaison normalemnt j'aurais {abc,acb,bcd,bdc} et puis je supprime les doublons alors j'aurais {abc,bcd}

    meme si j'ai une liste avec {abd,acd,abc} apres la combinaison j'aurais {abdc}

  9. #9
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    salut mes amis je 'arrive pas à faire combinaison entre les éléments d'une liste
    si j'ai une liste F {ab,ac,bc} alors j'aurais {abc,acb,bcd,bdc}
    meme si j'ai une liste avec {abd,acd,abc} apres la combinaison j'aurais {abdc}

  10. #10
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Je comprend pas comment tu passe d'une liste à l'autre. C bien de nous donner des exemples mais il nous faudrait aussi la règle qui te permet de passer de l'un à l'autre
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  11. #11
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    je m'avance et je pense que j'ai trouvé la solution mais je coince sur une condition que j'ignore de l'ajouter dans le code par exemple si j'ai une liste {ABC,ABD.BCE,ABF}
    essayez me comprendre
    car le code que je vais poster seulment une idée générale
    j'ai mis comme code



    for i = 1 jusqu'à 3 faire
    X=T1[i]
    for j= i+1 jusqu'à3 faire
    Y=T1[j]
    je vais séparer Y alors j'aurais une liste T2={A,B,D}
    je vais parcourir la liste
    while (i<=Té.size()){
    if (T2[K] appartient à X)
    remove
    K++;
    sinon K=T2.size();
    }
    concacténation x avec T2 ( le reste de la liste T2 )

    j'ai appliqué ça qu'avec i=1;alors j=2 T1[1]=ABC et T2[2]=ABD

    le problème que je n'arrive pas a ajouter la condition si je serais à j=3 T2[3]=BCE
    on voit B n'appartient pas à X alors je sote à j égale 4 ainsi de suite jusqu'à la fin de la liste T2

    j'espere que vous m'avez bien comprendre mes amis
    merci encore de bien vouloir m'aider

  12. #12
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    voila le code qu ej'ai fait mais un pb 
     
    public static void main(String[] args) {
         ArrayList A = new ArrayList();
         A.add("a");
         A.add("x");
         A.add("c");
         A.add("h");
         A.add("d");
         A.add("v");
     
         ArrayList B = new ArrayList();
         B.add("ah");
         B.add("ac");
         B.add("ad");
     
    ArrayList SS = new ArrayList();
         ArrayList c = new ArrayList();
         ArrayList T = new ArrayList();
         for (int i = 0; i < B.size(); i++) {
           String Q2 = B.get(i).toString();
     
           for (int j= i+1; j < B.size(); j++) {
             String Q1 = B.get(j).toString();
             char[] chars = Q1.toCharArray();
             StringBuffer buf = new StringBuffer();
             int m = chars.length;
             for (int E = 0; E < m; E++) {
               buf.append(chars[E]);
               for (int W = 0, n = buf.length(); W < n; W++) {
                 if (A.contains(buf.substring(W, buf.length()))) {
                   c.add(buf.substring(W, buf.length()));
                   buf = new StringBuffer();
                   W = n;
                 }
               }
     
             }
     
           }
     
           ArrayList AToDelete = new ArrayList();
     
           int u = 0;
           int index;
           Iterator ii = c.iterator();
           while (ii.hasNext()) {
             String x = ii.next().toString();
     
             index = Q2.lastIndexOf(x); //on recherche le dernier index où l'on trouve la chaine 1;
             if (index != -1) { // on a trouvé
     
               AToDelete.add(c.get(u));
     
             }
             u++;
           }
     
           c.removeAll(AToDelete);
     
     
     
           Iterator f = c.iterator();
     
           while (f.hasNext()) {
     
             String x = f.next().toString();
     
             String o = Q2.concat(x);
             SS.add(o);
           }
     
     
         }
           System.out.println(SS);
     
       }

    le résultat de la liste SS{[ahc, ahd, acd, acd]} mais normalemnt j'aurais [ahc, ahd, acd]

    please mes amis

  13. #13
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Juste une astuce, pour remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ArrayList A = new ArrayList();
    A.add("a");
    A.add("x");
    A.add("c");
    A.add("h");
    A.add("d");
    A.add("v");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<String> list = new ArrayList<String>();
    Collections.addAll(list, "a", "x", "c", "h", "d", "v");

  14. #14
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    merci mon ami pour cette astuce mais je cherche l'erreur pour que mon code m'afficher comme l'exemple que j'ai cité je voulais que SS contient [ahc, ahd, acd]
    et pas [ahc, ahd, acd, acd]

Discussions similaires

  1. [AC-2007] Fusion d’enregistrement avec suppression des doublons dans champs multivaleur
    Par Daniel-Gérald dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/09/2011, 04h20
  2. Probléme avec la suppression de ligne dans un tableau
    Par Tintou dans le forum VBA Word
    Réponses: 6
    Dernier message: 20/08/2009, 15h06
  3. Réponses: 2
    Dernier message: 24/09/2008, 18h14
  4. [C#] problème avec l'insertion des données dans MySQL
    Par madica dans le forum Accès aux données
    Réponses: 7
    Dernier message: 08/11/2005, 13h27

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