Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fusionner arraylist et retirer doublons

Sujet résolu
7 août 2018 à 16:35:54

Bonjour,

Je cherche à fusionner mes deux arraylist (appointements et fusionAgenda). Ensuite, je cherche à retirer les doublons

J'ai chercher comment faire, j'ai trouvé quelque chose avec HashSet mais "cannot find symbol hashset"...

            // List<Appointment> al = new ArrayList<>();
            // // add elements to al, including duplicates
            // Set<Appointment> hs = new HashSet<>();
            fusionAgenda.addAll(appointements);
            appointements.clear();
            appointements.addAll(fusionAgenda);



  • Partager sur Facebook
  • Partager sur Twitter
7 août 2018 à 17:06:35

Tu as deux solutions :

- Soit tu utilises de base un Set (HashSet hérite de Set) car il permet de ne pas avoir de doublons dans un tableau. Lors de ta fusion de tableau (ça, je m'en rappelle plus ce qu'il fait précisément), soit il va ignorer cette itération qu'il trouve, soit il va changer l'itération avec la nouvelle. Pour ça, je t'invite à regarder un peu plus la Javadoc.

https://docs.oracle.com/javase/7/docs/api/java/util/Set.html

- Sinon, si tu tiens vraiment à garder tes deux List (ArrayList hérite de List), il faut :

1 - créer une liste vide

2 - charger la 1ere liste dans la liste vide (s'il y a des doublons dans ta première liste, faire l'étape 3 avant avec le tableau vide et la liste 1)

3 - faire une boucle qui va parcourir la deuxième liste. Dans ta boucle, tu mets la condition si l'élément parcouru dans la liste 2 est dans la liste 1. Si c'est le cas, tu continues de parcourir la liste. Sinon, tu insères l'élément dans la première liste.

Du coup, ça te donnerait un truc comme ça :

// Etape 1 : Nouvelle liste
List<Appointement> listeTriees = new ArrayList<>();

// Etape 2 : Charger première liste dans nouvelle
listeTriees = liste1;

// Etape 3 : Boucler la liste 2
for (Appointement a : liste2) {
  if (!listeTriees.contains(a)) {
     listeTriees.add(a);
  }
}



  • Partager sur Facebook
  • Partager sur Twitter
7 août 2018 à 17:47:23

Bonjour,

"Cannot find symbol' a deux causes probables :

- soit tu as fais une erreur dans le nom (attention aux majuscules)

- soit tu as oublié d'importer la classe

import java.util.HashSet;



  • Partager sur Facebook
  • Partager sur Twitter
8 août 2018 à 8:46:03

brubru777 a écrit:

Bonjour,

"Cannot find symbol' a deux causes probables :

- soit tu as fais une erreur dans le nom (attention aux majuscules)

- soit tu as oublié d'importer la classe

import java.util.HashSet;

 Oui, effectivement x)

Je vais essayer la seconde solution RutsukuFushin :)

  • Partager sur Facebook
  • Partager sur Twitter