Adloun

programmation Java (école d'ingénieur) · Chapitre 13 · Exercice de TD

Traduire

Lambdas et streams · niveau 2

Énoncé

  • Traduire en un seul pipeline de stream la boucle suivante, qui calcule la somme des carrés des nombres pairs d'une liste l :

int s = 0;
for (int x : l) if (x % 2 == 0) s += x * x;
  • Traduire en boucle le pipeline suivant, et vérifier que les deux listes sont égales :

List<Integer> a = IntStream.range(1, 50).filter(x -> x % 7 == 0).boxed()
        .sorted((x, y) -> Integer.compare(y, x)).collect(Collectors.toList());

Corrigé


import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Exo7Traduire {
    public static void main(String[] args) {
        List<Integer> l = List.of(4, 7, 10, 3, 8, 15);
        // 1. boucle -> stream : somme des carrés des nombres pairs
        int s1 = 0;
        for (int x : l) if (x % 2 == 0) s1 += x * x;
        int s2 = l.stream().filter(x -> x % 2 == 0).mapToInt(x -> x * x).sum();
        System.out.println(s1 + " " + s2);

        // 2. stream -> boucle : les multiples de 7 inférieurs à 50, à l'envers
        List<Integer> a = IntStream.range(1, 50).filter(x -> x % 7 == 0).boxed()
                .sorted((x, y) -> Integer.compare(y, x)).collect(Collectors.toList());
        List<Integer> b = new ArrayList<>();
        for (int x = 49; x >= 1; x--) if (x % 7 == 0) b.add(x);
        System.out.println(a + " " + a.equals(b));
    }
}

180 180
[49, 42, 35, 28, 21, 14, 7] true
  • Le test devient un filter, le carré un mapToInt (qui donne un IntStream), l'accumulation un sum(). Avec la liste : .
  • IntStream.range(1, 50) parcourt ; boxed() passe des int aux Integer ; le tri par ordre décroissant se traduit simplement par une boucle qui descend.

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 →