programmation Java (école d'ingénieur) · Chapitre 13 · Application directe du cours
Statistiques de notes
Lambdas et streams · niveau 2
Énoncé
À partir de la liste de notes [12.5, 8.0, 15.5, 17.0, 9.5, 11.0, 14.0, 16.5], calculer avec des streams le nombre de notes, leur moyenne (deux décimales), la note maximale, le nombre de reçus (note au moins égale à ), et le nombre de notes par mention (TB à partir de , B de , AB de , P de , AJ en dessous), les mentions étant affichées dans l'ordre alphabétique.
Corrigé
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;
public class Exo5Statistiques {
static String mention(double n) {
if (n >= 16) return "TB";
if (n >= 14) return "B";
if (n >= 12) return "AB";
if (n >= 10) return "P";
return "AJ";
}
public static void main(String[] args) {
List<Double> notes = List.of(12.5, 8.0, 15.5, 17.0, 9.5, 11.0, 14.0, 16.5);
System.out.println("nombre : " + notes.size());
System.out.printf("moyenne : %.2f%n",
notes.stream().mapToDouble(Double::doubleValue).average().orElse(0));
System.out.println("max : " + notes.stream().mapToDouble(x -> x).max().getAsDouble());
System.out.println("reçus : " + notes.stream().filter(n -> n >= 10).count());
Map<String, Long> parMention = notes.stream()
.collect(Collectors.groupingBy(Exo5Statistiques::mention, TreeMap::new,
Collectors.counting()));
System.out.println(parMention);
}
}
nombre : 8
moyenne : 13.00
max : 17.0
reçus : 6
{AB=1, AJ=2, B=2, P=1, TB=2}
mapToDoublepasse d'unStream<Double>à unDoubleStream, qui sait calculeraverage()etmax(). Ces deux opérations renvoient unOptionalDouble(la liste pourrait être vide) :orElse(0)etgetAsDouble()en extraient la valeur.- La somme des notes vaut , d'où la moyenne .
groupingByprend ici trois arguments : la fonction qui calcule la clé (une référence à la méthodemention), la fabrique du dictionnaire (TreeMap::new, pour l'ordre alphabétique) et le collecteur appliqué à chaque groupe (counting()).
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 tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.