Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 6 · Exercice de TD
Regrouper les lignes
Relations et transactions · niveau 1 (application)
Énoncé
Écrire une méthode static List<LigneDemande> regrouper(List<LigneDemande> lignes) qui fusionne les lignes d'un même ISBN en additionnant leurs quantités, en gardant l'ordre de première apparition. Où l'appeler dans le service pour que la commande piégée de la section 6.3 soit refusée dès la vérification ?
Corrigé
public static List<LigneDemande> regrouper(List<LigneDemande> lignes) {
Map<String, Integer> quantites = new LinkedHashMap<>();
for (LigneDemande l : lignes) {
quantites.merge(l.isbn(), l.quantite(), Integer::sum);
}
List<LigneDemande> resultat = new ArrayList<>();
quantites.forEach((isbn, quantite) -> resultat.add(new LigneDemande(isbn, quantite)));
return resultat;
}
LinkedHashMap garde l'ordre d'insertion, et merge additionne les quantités. On l'appelle au début de commander, avant verifier : la commande piégée devient une seule ligne de 15 exemplaires, refusée par la vérification (« 11 en stock ») avec le reste des erreurs, au lieu d'échouer pendant l'enregistrement.
100 % gratuit
La suite du chapitre est sur Adloun
- 9 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.