11package fr .univ_amu .iut .exercice3 ;
22
3- import java .util .ArrayList ;
3+ import java .util .Comparator ;
44import java .util .List ;
55
66/// Kata 3 - Gestionnaire d'employés.
77///
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).
8+ /// Opérations simples sur une collection d'[Employe] : filtrer, agréger, trier.
9+ /// Kata idéal pour pratiquer les collections Java et la pensée "fonctions pures"
10+ /// (les méthodes ne modifient pas la liste initiale).
1111public class GestionnaireEmployes {
1212
1313 private final List <Employe > employes ;
@@ -16,33 +16,31 @@ public GestionnaireEmployes(List<Employe> employes) {
1616 this .employes = List .copyOf (employes );
1717 }
1818
19- /// Retourne la liste des employés âgés d'au moins 18 ans, dans l'ordre d'origine.
19+ /// Retourne la liste des employés âgés d'au moins 18 ans, dans
20+ /// l'ordre d'origine.
2021 public List <Employe > getMajeurs () {
21- List <Employe > majeurs = new ArrayList <>();
22- // TODO kata 3 : filtrer employes pour ne garder que ceux d'age >= 18.
23- return majeurs ;
22+ return employes .stream ().filter (e -> e .age () >= 18 ).toList ();
2423 }
2524
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).
25+ /// Retourne l'âge moyen des employés majeurs, ou `0.0` s'il n'y a aucun majeur
26+ /// (pour éviter une division par zéro).
2827 public double ageMoyenDesMajeurs () {
29- double moyenne = 0.0 ;
30- // TODO kata 3 : additionner les âges des majeurs puis diviser par leur nombre.
31- // Attention au cas "aucun majeur" → 0.0 (pas NaN).
32- return moyenne ;
28+ return employes .stream ()
29+ .filter (e -> e .age () >= 18 )
30+ .mapToInt (Employe ::age )
31+ .average ()
32+ .orElse (0.0 );
3333 }
3434
35- /// Retourne les employés triés par ordre alphabétique du nom (ne modifie pas la liste).
35+ /// Retourne les employés triés par ordre alphabétique du nom (ne modifie pas
36+ /// la liste).
3637 public List <Employe > parOrdreAlphabetique () {
37- List <Employe > tries = new ArrayList <>(employes );
38- // TODO kata 3 : trier tries avec un Comparator sur le nom.
39- return tries ;
38+ return employes .stream ().sorted (Comparator .comparing (Employe ::nom )).toList ();
4039 }
4140
42- /// Retourne les employés triés par ordre croissant d'âge (ne modifie pas la liste).
41+ /// Retourne les employés triés par ordre croissant d'âge (ne modifie pas
42+ /// la liste).
4343 public List <Employe > parAgeCroissant () {
44- List <Employe > tries = new ArrayList <>(employes );
45- // TODO kata 3 : trier tries avec un Comparator sur l'âge.
46- return tries ;
44+ return employes .stream ().sorted (Comparator .comparingInt (Employe ::age )).toList ();
4745 }
4846}
0 commit comments