diff --git "a/Exercices/corrig\303\251/serie9/Individu.java" "b/Exercices/corrig\303\251/serie9/Individu.java" deleted file mode 100644 index dfcd05addac14e51f3fca2d8dd0e7c8df069d043..0000000000000000000000000000000000000000 --- "a/Exercices/corrig\303\251/serie9/Individu.java" +++ /dev/null @@ -1,104 +0,0 @@ -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.Month; -import java.util.Arrays; -import java.util.List; -import java.util.Random; - -import java.io.Serializable; -import java.util.List; - -public class Individu implements Serializable { - // Enum pour les lieux de naissance - public enum LieuxDeNaissance { - TOKYO, PARIS, NAIROBI, LOS_ANGELES, BAMAKO, MOSCOU, CARACAS, TBILISSI - } - - // Enum pour les hobbies - public enum Hobbies { - JEUX_VIDEO, SPORT, RANDONNÉE, SKI, CINÉMA, CUISINE, LECTURE - } - - // Attributs privés - private final int taille; - private final LocalDateTime dateDeNaissance; - private final LieuxDeNaissance lieuDeNaissance; - private final int poids; - private final List<Hobbies> hobbies; - - // Constructeur - public Individu(int taille, LocalDateTime dateDeNaissance, LieuxDeNaissance lieuDeNaissance, int poids, List<Hobbies> hobbies) { - if (taille < 150 || taille > 190) { - throw new IllegalArgumentException("La taille doit être comprise entre 150cm et 190cm."); - } - if (poids < 60 || poids > 100) { - throw new IllegalArgumentException("Le poids doit être compris entre 60kg et 100kg."); - } - this.taille = taille; - this.dateDeNaissance = dateDeNaissance; - this.lieuDeNaissance = lieuDeNaissance; - this.poids = poids; - this.hobbies = hobbies; - } - - // Getters - public int getTaille() { - return taille; - } - - public LocalDateTime getDateDeNaissance() { - return dateDeNaissance; - } - - public LieuxDeNaissance getLieuDeNaissance() { - return lieuDeNaissance; - } - - public int getPoids() { - return poids; - } - - public List<Hobbies> getHobbies() { - return hobbies; - } - - // Affichage lisible - @Override - public String toString() { - return String.format("Né le %s à %s, mesure %dcm, pèse %dkg, aime %s", - dateDeNaissance.toLocalDate(), - lieuDeNaissance, - taille, - poids, - hobbies.toString().replace("[", "").replace("]", "")); - } - - // Affichage formaté pour la sauvegarde dans un fichier - public String toCSV() { - return String.format( - "%s,%s,%d,%d,%s", - dateDeNaissance.toLocalDate(), - lieuDeNaissance, - taille, - poids, - String.join(";", hobbies.stream().map(Enum::name).toList()) - ); - } - - // Création d'un individu à partir d'une ligne CSV - public static Individu fromCSV(String csvLine) { - String[] parts = csvLine.split(","); - LocalDateTime dateDeNaissance = LocalDateTime.of( - LocalDate.parse(parts[0]), - LocalTime.of(0, 0) - ); - LieuxDeNaissance lieuDeNaissance = LieuxDeNaissance.valueOf(parts[1]); - int taille = Integer.parseInt(parts[2]); - int poids = Integer.parseInt(parts[3]); - List<Hobbies> hobbies = Arrays.stream(parts[4].split(";")) - .map(Hobbies::valueOf) - .toList(); - return new Individu(taille, dateDeNaissance, lieuDeNaissance, poids, hobbies); - } -} diff --git "a/Exercices/corrig\303\251/serie9/IndividuUtils.java" "b/Exercices/corrig\303\251/serie9/IndividuUtils.java" deleted file mode 100644 index 3093f6829870300ae4650d26d2188b43adf0c96d..0000000000000000000000000000000000000000 --- "a/Exercices/corrig\303\251/serie9/IndividuUtils.java" +++ /dev/null @@ -1,53 +0,0 @@ -import java.time.LocalDateTime; -import java.time.Month; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Random; - -public class IndividuUtils { - - private static final Random RANDOM = new Random(); - - public static Individu createIndividu() { - int taille = 150 + RANDOM.nextInt(41); - int poids = 60 + RANDOM.nextInt(41); - - int year = 1990 + RANDOM.nextInt(35); - int month = 1 + RANDOM.nextInt(12); - int day = 1 + RANDOM.nextInt( - LocalDateTime.of( - year, month, 1, 0, 0).getMonth().length(false) - ); - int hour = RANDOM.nextInt(24); - int minute = RANDOM.nextInt(60); - - LocalDateTime dateDeNaissance = LocalDateTime.of(year, month, day, hour, minute); - - Individu.LieuxDeNaissance lieuDeNaissance = Individu.LieuxDeNaissance.values()[ - RANDOM.nextInt(Individu.LieuxDeNaissance.values().length) - ]; - - List<Individu.Hobbies> hobbiesList = Arrays.asList(Individu.Hobbies.values()); - List<Individu.Hobbies> hobbies = new ArrayList<>(); - int numberOfHobbies = 1 + RANDOM.nextInt(hobbiesList.size()); - - for (int i = 0; i < numberOfHobbies; i++) { - Individu.Hobbies hobby; - do { - hobby = hobbiesList.get(RANDOM.nextInt(hobbiesList.size())); - } while (hobbies.contains(hobby)); - hobbies.add(hobby); - } - - return new Individu(taille, dateDeNaissance, lieuDeNaissance, poids, hobbies); - } - - public static List<Individu> createIndividus(int n) { - List<Individu> individus = new ArrayList<>(); - for (int i = 0; i < n; i++) { - individus.add(createIndividu()); - } - return individus; - } -} diff --git "a/Exercices/corrig\303\251/serie9/Test0.java" "b/Exercices/corrig\303\251/serie9/Test0.java" deleted file mode 100644 index 397c50303bae1949d04b9c1ac54402698f7727e5..0000000000000000000000000000000000000000 --- "a/Exercices/corrig\303\251/serie9/Test0.java" +++ /dev/null @@ -1,16 +0,0 @@ -import java.util.List; - -public class Test0 { - public static void main(String[] args) { - System.out.println("Création d'un individu aléatoire :"); - Individu individu = IndividuUtils.createIndividu(); - System.out.println(individu); - - System.out.println(); - System.out.println("Création de 5 individus aléatoires :"); - List<Individu> individus = IndividuUtils.createIndividus(5); - for (Individu i : individus) { - System.out.println(i); - } - } -} diff --git "a/Exercices/corrig\303\251/serie9/Test1.java" "b/Exercices/corrig\303\251/serie9/Test1.java" deleted file mode 100644 index 2201f017bcc7b5ed75d105d68bfea5bc931481e2..0000000000000000000000000000000000000000 --- "a/Exercices/corrig\303\251/serie9/Test1.java" +++ /dev/null @@ -1,80 +0,0 @@ -import java.time.Month; -import java.util.*; -import java.util.stream.Collectors; - -public class Test1 { - public static void main(String[] args) { - // Générer une liste de 100 individus aléatoires - List<Individu> individus = IndividuUtils.createIndividus(100); - - // 1. Afficher tous les individus nés en 2000 au mois de mars - System.out.println("Individus nés en 2000 au mois de mars :"); - individus.stream() - .filter(i -> i.getDateDeNaissance().getYear() == 2000) - .filter(i -> i.getDateDeNaissance().getMonth() == Month.MARCH) - .forEach(System.out::println); - - // 2. Afficher les 5 premiers individus nés en juillet 1993 - System.out.println("\nLes 5 premiers individus nés en juillet 1993 :"); - individus.stream() - .filter(i -> i.getDateDeNaissance().getYear() == 1993) - .filter(i -> i.getDateDeNaissance().getMonth() == Month.JULY) - .limit(5) - .forEach(System.out::println); - - // 3. Afficher le nombre total d'individus nés en 1994 - long count1994 = individus.stream() - .filter(i -> i.getDateDeNaissance().getYear() == 1994) - .count(); - System.out.println("\nNombre total d'individus nés en 1994 : " + count1994); - - // 4. Afficher les 5 plus grands individus nés au mois de décembre de l'année 2001 - System.out.println("\nLes 5 plus grands individus nés en décembre 2001 :"); - individus.stream() - .filter(i -> i.getDateDeNaissance().getYear() == 2001) - .filter(i -> i.getDateDeNaissance().getMonth() == Month.DECEMBER) - .sorted(Comparator.comparingInt(Individu::getTaille).reversed()) - .limit(5) - .forEach(System.out::println); - - // 5. Afficher les 5 plus petits individus de taille au moins 180cm nés en 2002 - System.out.println("\nLes 5 plus petits individus (≥ 180cm) nés en 2002 :"); - individus.stream() - .filter(i -> i.getDateDeNaissance().getYear() == 2002) - .filter(i -> i.getTaille() >= 180) - .sorted(Comparator.comparingInt(Individu::getTaille)) - .limit(5) - .forEach(System.out::println); - - // 6. Afficher les 5 plus petits individus de taille au moins 180cm nés en 2002 par ordre décroissant de taille - System.out.println("\nLes 5 plus petits individus (≥ 180cm) nés en 2002 (ordre décroissant) :"); - individus.stream() - .filter(i -> i.getDateDeNaissance().getYear() == 2002) - .filter(i -> i.getTaille() >= 180) - .sorted(Comparator.comparingInt(Individu::getTaille).reversed()) - .limit(5) - .forEach(System.out::println); - - // 7. Afficher la liste (sans redondance) des hobbies des 5 plus lourds parmi les 20 plus grands individus nés en 1999 - System.out.println("\nHobbies (sans redondance) des 5 plus lourds parmi les 20 plus grands nés en 1999 :"); - individus.stream() - .filter(i -> i.getDateDeNaissance().getYear() == 1999) - .sorted(Comparator.comparingInt(Individu::getTaille).reversed()) - .limit(20) - .sorted(Comparator.comparingInt(Individu::getPoids).reversed()) - .limit(5) - .flatMap(i -> i.getHobbies().stream()) - .distinct() - .forEach(System.out::println); - - // 8. Afficher la liste (sans redondance) des mois de naissance des 20 plus grands individus nés en 1997 - System.out.println("\nMois de naissance (sans redondance) des 20 plus grands nés en 1997 :"); - individus.stream() - .filter(i -> i.getDateDeNaissance().getYear() == 1997) - .sorted(Comparator.comparingInt(Individu::getTaille).reversed()) - .limit(20) - .map(i -> i.getDateDeNaissance().getMonth()) - .distinct() - .forEach(System.out::println); - } -} diff --git "a/Exercices/corrig\303\251/serie9/Test2.java" "b/Exercices/corrig\303\251/serie9/Test2.java" deleted file mode 100644 index c0f932e79a3cddf377bf4bbab174919d516bf34d..0000000000000000000000000000000000000000 --- "a/Exercices/corrig\303\251/serie9/Test2.java" +++ /dev/null @@ -1,130 +0,0 @@ -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.Month; -import java.util.Arrays; -import java.util.List; -import java.util.Random; - -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.function.Consumer; -import java.util.function.Supplier; -import java.io.File; -import java.io.FileWriter; -import java.io.FileReader; -import java.io.BufferedReader; -import java.io.IOException; - -public class Test2 { - // Méthode surchargée pour contrôler le type de liste (ArrayList) - public static List<Individu> createIndividusArrayList(int n) { - return new ArrayList<>(IndividuUtils.createIndividus(n)); - } - - // Méthode surchargée pour contrôler le type de liste (LinkedList) - public static List<Individu> createIndividusLinkedList(int n) { - return new LinkedList<>(IndividuUtils.createIndividus(n)); - } - - // Méthode surchargée pour contrôler la source avec Supplier - public static List<Individu> createIndividus(Supplier<Individu> supplier, int n) { - List<Individu> individus = new ArrayList<>(); - for (int i = 0; i < n; i++) { - individus.add(supplier.get()); - } - return individus; - } - - // Méthode test pour afficher la liste des individus - public static void test(List<Individu> individus) { - individus.forEach(individu -> { - System.out.println(individu); - System.out.println("Hobbies: " + individu.getHobbies()); - }); - } - - // Méthode surchargée pour effectuer l'action de "sortie" - public static void testWithConsumer(List<Individu> individus, Consumer<Individu> consumer) { - individus.forEach(consumer); - } - - // Consumer pour écrire dans un fichier - public static Consumer<Individu> writeToFileConsumer(String fileName) { - return individu -> { - try (FileWriter writer = new FileWriter(fileName, true)) { - writer.write(individu.toCSV() + "\n"); - } catch (IOException e) { - e.printStackTrace(); - } - }; - } - - // Supplier pour lire depuis un fichier - public static Supplier<Individu> readFromFileSupplier(String fileName) { - return new Supplier<>() { - private BufferedReader reader; - { - try { - reader = new BufferedReader(new FileReader(new File(fileName))); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public Individu get() { - try { - if (reader != null) { - String line = reader.readLine(); - if (line != null) { - return Individu.fromCSV(line); - } - } - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - }; - } - - // Main pour tester les méthodes - public static void main(String[] args) { - System.out.println("Créer des individus avec ArrayList :"); - List<Individu> individusArrayList = createIndividusArrayList(5); - test(individusArrayList); - - System.out.println("\nCréer des individus avec LinkedList :"); - List<Individu> individusLinkedList = createIndividusLinkedList(5); - test(individusLinkedList); - - System.out.println("\nCréer des individus avec Supplier :"); - Supplier<Individu> singleSupplier = () -> new Individu( - 170, - LocalDateTime.of(1995, Month.JANUARY, 1, 0, 0), - Individu.LieuxDeNaissance.PARIS, - 70, - List.of(Individu.Hobbies.CINÉMA, Individu.Hobbies.SPORT) - ); - - // ou - // Supplier<Individu> singleSupplier = () -> IndividuUtils.createFixedIndividu(); - - List<Individu> individusFromSupplier = createIndividus(singleSupplier, 3); - test(individusFromSupplier); - - System.out.println("\nTester avec un Consumer :"); - String fileName = "individus.csv"; - Consumer<Individu> fileWriterConsumer = writeToFileConsumer(fileName); - testWithConsumer(individusArrayList, fileWriterConsumer); - - System.out.println("\nLire depuis le fichier avec Supplier :"); - Supplier<Individu> fileReaderSupplier = readFromFileSupplier(fileName); - Individu individuFromFile; - while ((individuFromFile = fileReaderSupplier.get()) != null) { - System.out.println("Lu depuis le fichier : " + individuFromFile); - } - } -}