programmation Java (école d'ingénieur) · Chapitre 10 · Exercice de TD
Trier sur deux clés
Classes abstraites et interfaces · niveau 2
Énoncé
Des élèves ont un nom et une note entière. Écrire un Comparator<Eleve> (par une classe anonyme) qui range par nom alphabétique et, à nom égal, par note décroissante. L'appliquer au tableau Petit 14, Martin 11, Petit 9, Abel 14.
Corrigé
Comparator<Eleve> parNomPuisNote = new Comparator<Eleve>() {
@Override
public int compare(Eleve a, Eleve b) {
int c = a.nom.compareTo(b.nom); // d'abord le nom
if (c != 0) return c;
return Integer.compare(b.note, a.note); // à nom égal, meilleure note d'abord
}
};
Arrays.sort(t, parNomPuisNote);
[Abel:14, Martin:11, Petit:14, Petit:9]
La seconde clé n'intervient que si la première ne départage pas. Pour un ordre décroissant, on inverse les arguments de Integer.compare.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.