jm2lrepresent
Messages postés5Date d'inscriptionmercredi 7 avril 2010StatutMembreDernière intervention10 décembre 2010
-
8 déc. 2010 à 02:14
jm2lrepresent
Messages postés5Date d'inscriptionmercredi 7 avril 2010StatutMembreDernière intervention10 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.
smarticu
Messages postés17Date d'inscriptionvendredi 19 mai 2006StatutMembreDerniè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());
}
});
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 8 déc. 2010 à 09:12
Salut,
Pourquoi gérer 2 listes en parallèle ? Je serais toi je ferais une seule liste contenant des classes contenant les 2 informations.
Sinon, une remarque en passant : les List sont génériques, alors évite de faire des ArrayList<Object> et spécialise tes types (par exemple : ArrayList), ca t'évitera bien des erreurs.
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
jm2lrepresent
Messages postés5Date d'inscriptionmercredi 7 avril 2010StatutMembreDernière intervention10 décembre 2010 8 déc. 2010 à 13:51
Salut DARKSIDIOUS,
Effectivement, en voulant simplifier mon code, j'ai marqué ArrayList<Object> en fait, c'est ArrayList<Fiche>
Je vois pas trop comment je peux m'en sortir avec une seule liste...
Je veux trier mes fiches par nom. Instinctivement, je dirais que je dois récupérer un nom pour chaque fiche, les mettre dans une autre liste, la trier (tableauDeNoms) alphabétiquement.
Ensuite, pour chaque tableauDeNoms.get(i), je veux 1 et 1 seule fiche. Dans mon code, si je crée les fiches fiche1(Dutronc,Jacques) et fiche2(Dutronc,Thomas), je vais avoir
tableauDeFiche = [fiche1, fiche2]
tableauDeNoms = [Dutronc, Dutronc]
et après traitement, mon tableau d'indices sera [0,0] ou [1,1] en fonction de si je mets un break ou non, alors que je veux qu'il soit tel que indices = [0,1]...