11package fr .univ_amu .iut .exercice3 ;
22
33import java .util .ArrayList ;
4+ import java .util .Comparator ;
45import java .util .List ;
56
67/// Kata 3 - Gestionnaire d'employés.
78///
8- /// Opérations simples sur une collection d'[Employe] : filtrer, agréger, trier. Kata idéal pour
9- /// pratiquer les collections Java et la pensée "fonctions pures" (les méthodes ne modifient pas la
10- /// liste initiale).
9+ /// Opérations simples sur une collection d'[Employe] : filtrer, agréger, trier.
10+ /// Kata idéal pour pratiquer les collections Java et la pensée "fonctions pures"
11+ /// (les méthodes ne modifient pas la liste initiale).
1112public class GestionnaireEmployes {
1213
1314 private final List <Employe > employes ;
@@ -16,33 +17,40 @@ public GestionnaireEmployes(List<Employe> employes) {
1617 this .employes = List .copyOf (employes );
1718 }
1819
19- /// Retourne la liste des employés âgés d'au moins 18 ans, dans l'ordre d'origine.
20+ /// Retourne la liste des employés âgés d'au moins 18 ans, dans
21+ /// l'ordre d'origine.
2022 public List <Employe > getMajeurs () {
2123 List <Employe > majeurs = new ArrayList <>();
2224 // TODO kata 3 : filtrer employes pour ne garder que ceux d'age >= 18.
25+ majeurs = employes .stream ().filter (e -> e .age () >= 18 ).toList ();
2326 return majeurs ;
2427 }
2528
26- /// Retourne l'âge moyen des employés majeurs, ou `0.0` s'il n'y a aucun majeur (pour éviter une
27- /// division par zéro).
29+ /// Retourne l'âge moyen des employés majeurs, ou `0.0` s'il n'y a aucun majeur
30+ /// (pour éviter une division par zéro).
2831 public double ageMoyenDesMajeurs () {
2932 double moyenne = 0.0 ;
3033 // TODO kata 3 : additionner les âges des majeurs puis diviser par leur nombre.
3134 // Attention au cas "aucun majeur" → 0.0 (pas NaN).
35+ moyenne = getMajeurs ().stream ().mapToInt (Employe ::age ).average ().orElse (0.0 );
3236 return moyenne ;
3337 }
3438
35- /// Retourne les employés triés par ordre alphabétique du nom (ne modifie pas la liste).
39+ /// Retourne les employés triés par ordre alphabétique du nom (ne modifie pas
40+ /// la liste).
3641 public List <Employe > parOrdreAlphabetique () {
3742 List <Employe > tries = new ArrayList <>(employes );
3843 // TODO kata 3 : trier tries avec un Comparator sur le nom.
44+ tries = employes .stream ().sorted (Comparator .comparing (Employe ::nom )).toList ();
3945 return tries ;
4046 }
4147
42- /// Retourne les employés triés par ordre croissant d'âge (ne modifie pas la liste).
48+ /// Retourne les employés triés par ordre croissant d'âge (ne modifie pas
49+ /// la liste).
4350 public List <Employe > parAgeCroissant () {
4451 List <Employe > tries = new ArrayList <>(employes );
4552 // TODO kata 3 : trier tries avec un Comparator sur l'âge.
53+ tries = employes .stream ().sorted (Comparator .comparingInt (Employe ::age )).toList ();
4654 return tries ;
4755 }
4856}
0 commit comments