Doublons dans une ArrayList

Résolu
jm2lrepresent Messages postés 5 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 10 décembre 2010 - 8 déc. 2010 à 02:14
jm2lrepresent Messages postés 5 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 10 décembre 2010 - 10 déc. 2010 à 13:55
Bonjour à tous!
Je suis dans l'obligation de solliciter une nouvelle fois votre aide!!
Mon problème est le suivant:

Dans le cadre d'un projet portant sur la création d'un carnet d'adresses, un souci majeur me fait face... Le but du jeu est donc de créer un gestionnaire de contacts, chaque contact étant représenté par une fiche, et, ici, je voudrais classer toutes mes fiches par nom de famille.
Dans le bout de code fourni, on a tableauDeFiches qui contient toutes les fiches à trier, et on a tableauDeNoms, qui contient les noms de famille associés à chacune des fiches. Ce dernier est trié alphabétiquement, et ces 2 tableaux sont de même taille. Le problème, c'est que dans le cas de 2 personnes du même nom, tableauDeNoms a 2 cases identiques. Et, lorsque je veux récupérer l'indices de la fiche correspondante dans tableauDeFiches, fatalement, je me retrouve avec 2 fois la même fiche...

Voilà un bout du code, j'espère qu'il est suffisamment clair.


String s;
ArrayList<Object> tableauDeFiches = new ArrayList<Object>();
ArrayList<String> tableauDeNoms = new ArrayList<String>();
int indice[] = new int[tableauDeFiches.size()];

for(int i = 0; i < tableauDeFiches.size(); i++){
for(int j = 0; j < tableauDeNoms.size(); j++){
s = tableauDeFiches.get(j).getNom(); // On récupère le nom associé à une fiche
// Le nom récupéré existe dans tableauDeNoms
// Dès qu'il est trouvé, il faut incrémenter le tableau d'indices
if(s.equals(tableauDeNoms.get(i))){
indice[i] = j;
// Traitement à effectuer que je ne comprends pas
// tableauDeNoms.remove(i); ???
// tableauDeNoms.set(i,""); ???
// Utilisation d'un break; ??
}
}
}


J'ai essayé beaucoup de bidouillages, sans succès, c'est pourquoi je fais appel à vous.
En espérant avoir été assez explicite.

Cordialement,
jm2lrepresent

4 réponses

smarticu Messages postés 17 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 6 juin 2011
8 déc. 2010 à 16:33
Un truc du genre ne te conviendrais pas pour classer tes fiches par ordrer alphabétique ?

final List<Fiche> fiches = new ArrayList<Fiche>();

//fill your list here

Collections.sort(fiches, new Comparator<Fiche>() {
@Override
public int compare(final Fiche f1, final Fiche f2) {
return f1.getLastname().compareTo(f2.getLastname())
+ f1.getFirstname().compareTo(f2.getFirstname());
}
});
3