Collections, streams et exceptions en Java
Collections, streams et exceptions est un cours de niveau intermédiaire de 5 leçons (environ 2 h 29), avec 15 exercices et 15 questions de quiz. Prérequis : Java orienté objet. Les exercices sont exécutés et corrigés dans une sandbox côté serveur.
- Java
- Intermédiaire
- 5 leçons
- 2 h 29
- 15 exercices
- Exercices exécutés dans une sandbox serveur
Le cours en bref
Ce cours vous apprend à utiliser le framework Collections de Java (List, Set, Map), à écrire des traitements de données expressifs avec les lambdas et l'API Stream, et à gérer les erreurs de façon robuste avec les exceptions. Chaque notion est mise en pratique sur des cas concrets : catalogue produits, ventes, comptes bancaires. C'est le socle indispensable avant les tests, Spring Boot et JPA.
Ce que tu sauras faire
- Choisir et utiliser la bonne collection (List, Set, Map) et la bonne implémentation selon le besoin
- Écrire des lambdas, des références de méthode et des comparateurs multicritères
- Construire des pipelines de streams avec filter, map, sorted, groupingBy et joining
- Manipuler Optional pour représenter l'absence de résultat sans null
- Gérer les erreurs avec try/catch/finally, des exceptions métier et try-with-resources
Programme des 5 leçons
- Créer et manipuler une List<T> avec ArrayList
- Distinguer une liste modifiable d'une liste immuable (List.of)
- Parcourir et filtrer une liste sans provoquer de ConcurrentModificationException
- 02
Ensembles et dictionnaires : Set et Map
- Utiliser un Set pour éliminer les doublons et tester l'appartenance
- Utiliser une Map pour associer des clés à des valeurs et compter des occurrences
- Choisir entre implémentations Hash, Linked et Tree selon l'ordre souhaité
Set (HashSet, TreeSet)Map (HashMap, TreeMap)equals et hashCode
- 03
Lambdas, Comparator et premiers streams
- Écrire des lambdas et des références de méthode
- Trier des objets avec Comparator.comparing, reversed et thenComparing
- Construire un pipeline stream filter / map / sorted / toList
- 04
Collectors, regroupements et Optional
- Regrouper et agréger avec Collectors.groupingBy, counting, summingInt
- Produire des chaînes avec Collectors.joining
- Manipuler un Optional sans risquer de NoSuchElementException
- 05
Gérer les erreurs avec les exceptions
- Capturer et traiter des exceptions avec try / catch / finally
- Distinguer exceptions vérifiées (checked) et non vérifiées (unchecked)
- Créer ses propres exceptions métier et libérer les ressources avec try-with-resources
Projet final
Analyseur de commandes e-commerce
Écrivez un programme Java qui lit un export de commandes au format texte (une commande par ligne : id;client;categorie;montant;statut). Le programme doit ignorer et signaler les lignes invalides grâce aux exceptions, puis produire un rapport : chiffre d'affaires par catégorie trié, nombre de commandes par statut, top 3 des clients par montant cumulé, et recherche d'une commande par identifiant renvoyant un Optional.
Livrables
- Un fichier Main.java complet (records Commande, exception ImportException, classe RapportCommandes)
- Un jeu de données d'exemple d'au moins 15 lignes dont 3 invalides
- La sortie du rapport pour ce jeu de données
- Un court texte expliquant le choix des collections et des collecteurs utilisés
Critères d'évaluation
- Les lignes invalides sont signalées avec leur numéro sans interrompre le traitement
- Les agrégations utilisent groupingBy et des collecteurs aval appropriés, avec un ordre d'affichage déterministe
- Aucun appel à Optional.get() sans vérification, aucun catch vide
- Le code est lisible : records, méthodes courtes, noms explicites
- Les résultats du rapport sont exacts pour le jeu de données fourni
Questions fréquentes
Faut-il connaître la programmation orientée objet avant ce cours ?
Oui : le cours suppose que vous savez écrire des classes, des records et des interfaces simples, comme vu dans le cours Java orienté objet.
Quelle version de Java est utilisée ?
Java 25, la version LTS actuelle. Les exemples utilisent notamment les records, les collections séquencées (getFirst, getLast, reversed), Stream.toList(), le switch moderne et la variable anonyme _ dans les catch.
Les streams remplacent-ils les boucles for ?
Non. Les streams sont plus lisibles pour enchaîner filtrage, transformation et agrégation, mais une boucle reste parfois plus claire. Le cours vous apprend à choisir.
Ce cours prépare-t-il à Spring Boot ?
Oui. Collections, streams, Optional et exceptions métier sont utilisés en permanence dans les services et contrôleurs Spring Boot abordés dans la suite du parcours.
Ce cours, raconté pour ton métier
Dis ce que tu veux savoir faire : « Collections, streams et exceptions » prend sa place dans ton parcours, avec des exemples de ton secteur. Les notions restent celles du cours.