Exemple Java IntStream - Programmation procédurale vs. fonctionnelle

import java.util.Arrays;
import java.util.List;
import java.util.function.IntPredicate;
import java.util.stream.IntStream;

public class Main {

  public static void main(String[] args) {

    /* --- Programmation procédurale --- */

    // Décalaration de la liste
    List < Integer > numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
    // Le résultat de l'addition
    int result1 = 0;
    // Pour chaque nombre dans la liste
    for (int number: numbers) {
      // Si le nombre est pair
      if (number % 2 == 0) {
        // On l'ajoute au résulat
        result1 += number;
      }
    }
    System.out.println(result1);

    /* --- Programmation fonctionnelle --- */

    // La liste des nombres en stream
    final int result2 = IntStream.of(1, 2, 3, 4, 5, 6)
      // Filtre tous les nombres pairs avec le prédicat
      .filter(isEven())
      // Additionne tous les nombres de la liste
      .sum();
    System.out.println(result2);

  }

  //Le prédicat pour les nombres pairs
  private static IntPredicate isEven() {
    return i -> i % 2 == 0;
  }

}

Commentaires