Adloun

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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →