Adloun

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

Exercice suivant et tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →