🛢️Parcours Fioul GroupéJava · Chapitre 13
Accueil › Java › Chapitre 13
Chapitre 13 / 22

La programmation fonctionnelle

Lambdas, interfaces fonctionnelles et Streams : le style déclaratif introduit par Java 8 pour traiter des collections de façon concise et lisible.

1 Notion

Lambdas & interfaces fonctionnelles

Une lambda est une fonction anonyme concise. Elle implémente une interface fonctionnelle (une seule méthode abstraite).

Predicate<Commande> grosse = c -> c.getLitres() >= 2000;
Function<Commande, Integer> vol = Commande::getLitres;   // référence de méthode
Runnable r = () -> System.out.println("clôture");
2 Notion

Les Streams

Un Stream enchaîne des opérations (filter, map, reduce, collect) sur une collection, sans boucle explicite.

int total = commandes.stream()
    .filter(c -> c.getStatut() == Statut.CONFIRMEE)
    .mapToInt(Commande::getLitres)
    .sum();

List<String> noms = participants.stream()
    .map(Participant::getNom)
    .sorted()
    .toList();
Déclaratif — on décrit quoi faire, pas comment boucler. Le même calcul qu'au chapitre 3 (cumul du volume), en une expression.
🛢️ Sur le projet Fioul Groupé

Le volume total confirmé d'une campagne : commandes.stream().filter(...).mapToInt(Commande::getLitres).sum(). C'est la version Java de l'agrégation SQL SUM(litres) et du $group MongoDB — trois écritures d'un même calcul métier, au cœur du projet.

À retenir
← Chapitre 12