Comparer et trier des objets
Donner un ordre à des objets : l'ordre naturel avec compareTo et le signe de son résultat, le comparateur externe, les critères successifs, le tri d'une collection et la cohérence avec l'égalité.
- 25 cartes
- 4 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
Quelques cartes du deck
Comparable : de quoi s'agit-il ?
Voir la réponse
Interface Java dont la méthode
compareTodonne à une classe son ordre naturel, utilisé par défaut pour trier ses instances.a.compareTo(b)renvoie un entier négatif, nul ou positif.StringetIntegerl'implémentent ; pour nos classes, c'est à nous d'écrireimplements Comparable<Etudiant>.Quel est le signe de
"pomme".compareTo("poire")?- Positif : "pomme" vient après "poire"
- Négatif : "pomme" est plus courte
- Nul : les deux mots commencent par "po"
- Négatif : "m" vient avant "i" dans l'alphabet
Voir la réponse
Positif : "pomme" vient après "poire"
Les deux mots diffèrent à la troisième lettre : "m" contre "i". "i" vient avant "m", donc "poire" précède "pomme" et le résultat est positif (4, l'écart des codes). Les longueurs ne comptent qu'en cas de préfixe commun.
a.compareTo(b) renvoie un entier … si a vient avant b, … si l'ordre ne les distingue pas, et … si a vient après b.
Voir la réponse
a.compareTo(b) renvoie un entier négatif si a vient avant b, nul si l'ordre ne les distingue pas, et positif si a vient après b.
Seul le signe compte, pas la valeur :
"chat".compareTo("chien")vaut -8, mais tout négatif signifierait la même chose.Comparateur : de quoi s'agit-il ?
Voir la réponse
Objet externe, séparé de la classe triée, qui compare deux objets et définit un ordre au choix de l'appelant.
Comparator<T>a une méthodecompare(a, b). On peut avoir plusieurs ordres pour la même classe (par nom, par moyenne), ce quecompareToseul ne permet pas.Une application doit afficher les mêmes étudiants tantôt triés par nom, tantôt par moyenne. Quelle conception choisir ?
- Modifier
compareToavant chaque tri pour changer de critère - Un comparateur par critère, passé à
sortselon le choix - Dupliquer la classe :
EtudiantParNometEtudiantParMoyenne - Trier une première fois, puis lire la liste à l'envers pour l'autre critère
Voir la réponse
Un comparateur par critère, passé à
sortselon le choixcompareTone définit qu'un ordre, fixé dans la classe. Plusieurs ordres pour la même classe, c'est précisément la raison d'être des comparateurs externes. Lire à l'envers ne change pas le critère.- Modifier