From ee97d00d38b00c59e8a64d6a3dcc4a429fbc7bb6 Mon Sep 17 00:00:00 2001 From: AzraKayn/Axel Date: Wed, 10 Dec 2025 11:32:37 +0100 Subject: [PATCH] Correction Exo streams-adv --- src/test/java/java17/ex01/Stream_01_Test.java | 17 ++++++----- src/test/java/java17/ex02/Stream_02_Test.java | 13 +++++---- src/test/java/java17/ex03/Stream_03_Test.java | 29 ++++++++++++++----- src/test/java/java17/ex04/Stream_04_Test.java | 12 ++++---- 4 files changed, 45 insertions(+), 26 deletions(-) diff --git a/src/test/java/java17/ex01/Stream_01_Test.java b/src/test/java/java17/ex01/Stream_01_Test.java index b78fd9f0..9114e4ed 100644 --- a/src/test/java/java17/ex01/Stream_01_Test.java +++ b/src/test/java/java17/ex01/Stream_01_Test.java @@ -11,6 +11,7 @@ import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; import org.junit.Test; @@ -28,7 +29,7 @@ public void test_stream_filter() throws Exception { List pizzas = new Data().getPizzas(); // TODO récupérer la liste des pizzas dont le prix est >= 1300 - List result = null; + List result = pizzas.stream().filter(p -> p.getPrice() >= 1300).toList(); assertThat(result, hasSize(3)); assertThat(result, everyItem(hasProperty("price", anyOf(equalTo(1300), greaterThan(1300))))); @@ -39,7 +40,7 @@ public void test_stream_filter_count() throws Exception { List pizzas = new Data().getPizzas(); // TODO compter le nombre de pizzas dont le prix est >= 1300 - long result = 0L; + long result = pizzas.stream().filter(p->p.getPrice() >= 1300).count(); assertThat(result, is(3L)); } @@ -50,10 +51,10 @@ public void test_stream_anyMatch() throws Exception { List pizzas = new Data().getPizzas(); // TODO valider si au moins une pizza à un prix >= 1300 - Boolean result1 = null; + Boolean result1 = pizzas.stream().anyMatch(p->p.getPrice() >= 1300); // TODO valider si au moins une pizza à un prix >= 2000 - Boolean result2 = null; + Boolean result2 = pizzas.stream().anyMatch(p->p.getPrice() >= 2000);; assertThat(result1, is(true)); assertThat(result2, is(false)); @@ -65,10 +66,10 @@ public void test_stream_allMatch() throws Exception { List pizzas = new Data().getPizzas(); // TODO valider que toutes les pizzas ont un prix >= 1300 - Boolean result1 = null; + Boolean result1 = pizzas.stream().allMatch(p->p.getPrice() >= 1300); // TODO valider que toutes les pizzas ont un prix >= 900 - Boolean result2 = null; + Boolean result2 = pizzas.stream().allMatch(p->p.getPrice() >= 900);; assertThat(result1, is(false)); assertThat(result2, is(true)); @@ -80,7 +81,7 @@ public void test_stream_noneMatch() throws Exception { List pizzas = new Data().getPizzas(); // TODO valider qu'aucune pizza n'a un prix >= 2000 - Boolean result1 = null; + Boolean result1 = pizzas.stream().noneMatch(p->p.getPrice() >= 2000); assertThat(result1, is(true)); } @@ -90,7 +91,7 @@ public void test_stream_findFirst() throws Exception { List orders = new Data().getOrders(); // TODO récupérer une commande faite par un client dont le prénom est "Sophie" - Optional result = null; + Optional result = orders.stream().filter(o->o.getCustomer().getFirstname().equals("Sophie")).findFirst(); assertThat(result.isPresent(), is(false)); } diff --git a/src/test/java/java17/ex02/Stream_02_Test.java b/src/test/java/java17/ex02/Stream_02_Test.java index 198d59fc..e41698e5 100644 --- a/src/test/java/java17/ex02/Stream_02_Test.java +++ b/src/test/java/java17/ex02/Stream_02_Test.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.OptionalDouble; +import java.util.stream.Collectors; import org.junit.Test; @@ -24,7 +25,7 @@ public void test_map() throws Exception { List orders = new Data().getOrders(); // TODO Trouver la liste des clients associés aux commandes - List result = null; + List result = orders.stream().map(o->o.getCustomer()).toList(); assertThat(result, hasSize(8)); } @@ -35,7 +36,7 @@ public void test_map_count() throws Exception { List orders = new Data().getOrders(); // TODO Compter le nombre de clients associés aux commandes - long result = 0; + long result = orders.stream().map(o->o.getCustomer()).count(); assertThat(result, is(8L)); } @@ -46,7 +47,7 @@ public void test_map_distinct() throws Exception { List orders = new Data().getOrders(); // TODO Trouver la liste des différents clients associés aux commandes (sans doublon) - List result = null; + List result = orders.stream().map(o->o.getCustomer()).distinct().toList(); assertThat(result, hasSize(2)); } @@ -57,7 +58,7 @@ public void test_map_distinct_count() throws Exception { List orders = new Data().getOrders(); // TODO Compter le nombre des différents clients associés aux commandes - long result = 0L; + long result = orders.stream().map(o->o.getCustomer()).distinct().count(); assertThat(result, is(2L)); } @@ -71,7 +72,7 @@ public void test_mapToDouble_sum() throws Exception { * TODO Calculer le chiffre d'affaires total de la pizzeria (somme des prix des * commandes) */ - double result = 0.0; + double result = orders.stream().mapToDouble(o->o.getPrice()).sum(); assertThat(result, is(10900.0)); } @@ -84,7 +85,7 @@ public void test_mapToDouble_avg() throws Exception { /* * TODO Calculer le prix moyen des commandes de la pizzeria */ - OptionalDouble result = null; + OptionalDouble result = orders.stream().mapToDouble(o->o.getPrice()).average(); assertThat(result.isPresent(), is(true)); assertThat(result.getAsDouble(), is(1362.5)); diff --git a/src/test/java/java17/ex03/Stream_03_Test.java b/src/test/java/java17/ex03/Stream_03_Test.java index b7c52a3d..80407ef7 100644 --- a/src/test/java/java17/ex03/Stream_03_Test.java +++ b/src/test/java/java17/ex03/Stream_03_Test.java @@ -4,9 +4,12 @@ import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Collector; +import java.util.stream.Collectors; import org.junit.Test; @@ -26,7 +29,17 @@ public void test_max() throws Exception { List orders = new Data().getOrders(); // TODO Retrouver la commande avec le prix le plus élevé - Optional result = null; + + Comparator comparator = (Order o1, Order o2) -> { + if (o1.getPrice()>o2.getPrice()) { + return 1; + } else if (o1.getPrice()x.getMethode) + Optional result = orders.stream().max(Comparator.comparing(o->o.getPrice())); assertThat(result.isPresent(), is(true)); assertThat(result.get().getPrice(), is(2200.0)); @@ -38,7 +51,9 @@ public void test_min() throws Exception { List orders = new Data().getOrders(); // TODO Retrouver la commande avec le prix le moins élevé - Optional result = null; + + // cas inverse de max + Optional result = orders.stream().min(Comparator.comparing(o->o.getPrice())); assertThat(result.isPresent(), is(true)); assertThat(result.get().getPrice(), is(1000.0)); @@ -51,7 +66,7 @@ public void test_map_collect_joining() throws Exception { // TODO construire une chaîne contenant les prénoms des clients triés et séparés // par le caractère "|" - String result = null; + String result = customers.stream().map(c->c.getFirstname()).sorted().collect(Collectors.joining("|")); assertThat(result, is("Alexandra|Cyril|Johnny|Marion|Sophie")); } @@ -62,7 +77,7 @@ public void test_flatMap() throws Exception { List orders = new Data().getOrders(); // TODO Extraire la liste des pizzas de toutes les commandes - List result = null; + List result = orders.stream().flatMap(o->o.getPizzas().stream()).toList(); assertThat(result.size(), is(9)); } @@ -73,7 +88,7 @@ public void test_flatMap_distinct() throws Exception { List orders = new Data().getOrders(); // TODO Extraire la liste des différentes pizzas de toutes les commandes - List result = null; + List result = orders.stream().flatMap(o->o.getPizzas().stream()).distinct().toList();; assertThat(result.size(), is(4)); } @@ -84,7 +99,7 @@ public void test_grouping() throws Exception { List orders = new Data().getOrders(); // TODO construire une Map > result = null; + Map> result = orders.stream().collect(Collectors.groupingBy(Order::getCustomer)); // Order::getMethode reviens à faire x->x.getMethode assertThat(result.size(), is(2)); assertThat(result.get(new Customer(1)), hasSize(4)); @@ -98,7 +113,7 @@ public void test_partitionning() throws Exception { // TODO Séparer la liste des pizzas en 2 ensembles : // TODO true -> les pizzas dont le nom commence par "L" // TODO false -> les autres - Map> result = null; + Map> result = pizzas.stream().collect(Collectors.partitioningBy(p->p.getName().charAt(0) == 'L')); assertThat(result.get(true), hasSize(6)); assertThat(result.get(false), hasSize(2)); diff --git a/src/test/java/java17/ex04/Stream_04_Test.java b/src/test/java/java17/ex04/Stream_04_Test.java index 84e2529c..f46fa8be 100644 --- a/src/test/java/java17/ex04/Stream_04_Test.java +++ b/src/test/java/java17/ex04/Stream_04_Test.java @@ -16,7 +16,9 @@ public class Stream_04_Test { @Test public void test_of() throws Exception { // Construire un stream permettant de rendre le test passant - Stream result = null; + + + Stream result = Stream.of("Alexandra", "Cyril", "Johnny", "Marion", "Sophie"); assertThat(result.toArray(), arrayContaining("Alexandra", "Cyril", "Johnny", "Marion", "Sophie")); } @@ -26,7 +28,7 @@ public void test_builder() throws Exception { // TODO compléter pour rendre le test passant // TODO utiliser la méthode "add" - Stream result = Stream.builder().build(); + Stream result = Stream.builder().add("Alexandra").add("Cyril").add("Johnny").add("Marion").add("Sophie").build(); assertThat(result.toArray(), arrayContaining("Alexandra", "Cyril", "Johnny", "Marion", "Sophie")); } @@ -37,7 +39,7 @@ public void test_concat() throws Exception { Stream s2 = Stream.of("Johnny", "Marion", "Sophie"); // TODO concatener les deux streams s1 et s2 - Stream result = null; + Stream result = Stream.concat(s1, s2); assertThat(result.toArray(), arrayContaining("Alexandra", "Cyril", "Johnny", "Marion", "Sophie")); } @@ -45,8 +47,8 @@ public void test_concat() throws Exception { @Test public void test_iterate() throws Exception { // TODO utiliser la méthode "iterate" de Stream afin de rendre le test passant - Stream result1 = null; - Stream result2 = null; + Stream result1 = Stream.iterate(1, i->i).limit(5); + Stream result2 = Stream.iterate(1, i->i+1).limit(5); assertThat(result1.toArray(), arrayContaining(1,1,1,1,1)); assertThat(result2.toArray(), arrayContaining(1,2,3,4,5)); }