Page Home (contact) Retour TPs
Vous allez compléter la méthode main
de cette classe pour trier la liste de villes. Vous ne devez pas modifier le code de la classe Ville.
Comparator
. Utilisez la classe Collections
(ne l'utilisez pas pour les 2 questions suivantes).Vous allez compléter la méthode main
de cette classe pour trier la liste d'étudiants. Vous ne devez pas modifier le code de la classe Etudiant.
etudiants.sort(Comparator.comparing(e -> e.getAnPromo()));Étudiez la javadoc de la méthode comparing et testez ce code.
Comparator
, tri décroissant des étudiants par année de promotion.Comparator
, tri décroissant des étudiants par année de promotion, et pour chaque année de promotion, tri croissant par moyenne. Donnez une solution avec des expressions lambda et une solution avec des références de méthode.Question 2
Question 3
Question 4
Avec la classe Etudiant, on veut faire afficher la meilleure moyenne des étudiants de la promotion de l'année 2013.
L'idée du code :
double max = etudiants .filter(e -> e.getAnPromo() == 2013) .map(e -> e.getMoyenne()) .max();
Mais on a vu en cours qu'il faut passer par les streams pour utiliser les expressions lambda pour filtrer ou faire un "mapping". On remplace donc le code par celui-ci :
double max = etudiants.stream() .filter(e -> e.getAnPromo() == 2013) .map(e -> e.getMoyenne()) .max();
Testez en complétant ce code. Vous comprenez le message d'erreur ? Corrigez le code. Si vous ne voyez pas, lisez ces indications.
Écrivez une méthode qui retourne la meilleure moyenne des étudiants d'une promotion dont l'année est passée en paramètre (la liste des étudiants est aussi passée en paramètre). Testez.
Montrez que le paramètre doit être effectivement final pour que le code compile.
max est une opération terminale de type "reduce" (produit une nouvelle valeur après chaque traitement d'un élément du stream). Nous allons écrire une expression lambda qui utilise une opération terminale de type "collect" (les informations sont collectées dans un container).
Vous allez utiliser la classe Etudiant. Testez en complétant ce code.
Écrivez un méthode qui prend en paramètre une liste d'étudiants, une année de promotion et une valeur de type double et qui retourne une liste des étudiants qui ont une moyenne supérieur à la valeur de type double passée en paramètre. De plus cette liste retournée sera triée par moyenne décroissante. Vous utiliserez pour cela des expressions lambda et des streams.
Si vous n'y arrivez pas aisément, commencez par récupérer tous les étudiants d'une promotion dans une liste. Testez. Ensuite récupérez seulement ceux qui ont une moyenne supérieure à une certaine moyenne (avant de récupérer les étudiants dans une liste il faut les filtrer). Ensuite vous triez la liste par moyenne croissante et finalement par moyenne décroissante.
Tutoriel Oracle sur les expressions lambda