Expressions Lambda et API Stream

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous allez apprendre à utiliser deux des fonctionnalités les plus importantes de Java 8 - les expressions Lambda et l'API Stream. Les expressions Lambda sont utilisées pour créer des fonctions anonymes qui peuvent être passées en tant qu'arguments à d'autres méthodes, tandis que l'API Stream est utilisée pour effectuer une séquence d'opérations sur une collection.

Configure l'environnement Java

Tout d'abord, configurez l'environnement Java en installant la dernière version de Java sur votre système. Vous pouvez télécharger et installer Java à partir du site web officiel. Après l'installation, ouvrez le terminal et vérifiez la version de Java.

java -version

Créez un fichier Java

Ensuite, créez un nouveau fichier Java dans votre répertoire ~/projet nommé LambdaExpressions.java.

touch ~/project/LambdaExpressions.java

Dans ce fichier, nous allons écrire du code pour implémenter les expressions Lambda et l'API Stream.

Utilisez une expression Lambda pour calculer la somme de deux nombres

Les expressions Lambda offrent un moyen simple de créer des fonctions anonymes. Créez un FunctionalInterface qui représentera une fonction qui prend deux nombres en entrée et renvoie leur somme.

interface Calculator {
  int sum(int a, int b);
}

Ensuite, nous pouvons utiliser l'expression Lambda pour créer un objet de cet interface et puis appeler la fonction sum() à l'aide de cet objet.

  Calculator adder = (a, b) -> a + b;
  int result = adder.sum(10, 20);
  System.out.println("Résultat : " + result);

Maintenant, compilez et exécutez ce code à l'aide de la commande suivante :

javac ~/project/LambdaExpressions.java && java LambdaExpressions

La sortie devrait être :

Résultat : 30

Itérez sur une collection à l'aide de l'API Stream

L'API Stream est utilisée pour effectuer une séquence d'opérations sur une collection. Dans cette étape, nous allons apprendre à itérer sur une collection de chaînes de caractères et à filtrer les chaînes qui commencent par "A".

Créez une liste de chaînes de caractères contenant quelques noms pour travailler.

List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Andy");

Ensuite, utilisez l'API Stream pour itérer sur cette collection, filtrer les chaînes qui commencent par "A" et imprimer les autres dans la console.

  names.stream().filter(s -> s.startsWith("A")).forEach(System.out::println);

Maintenant, compilez et exécutez ce code à l'aide de la commande suivante :

javac ~/project/LambdaExpressions.java && java LambdaExpressions

La sortie devrait être :

Alice
Andy

Utilisez l'API Stream pour trouver le maximum et le minimum dans une liste d'entiers

L'API Stream fournit un moyen d'effectuer une séquence d'opérations sur une collection. Dans cette étape, nous allons apprendre à utiliser l'API Stream pour trouver les éléments maximum et minimum dans une liste d'entiers.

Créez une liste d'entiers

List<Integer> numbers = Arrays.asList(10, 2, 30, 5, 4, 20);

Trouvez l'élément maximum de la liste à l'aide de l'API Stream.

Optional<Integer> maxNum = numbers.stream().max(Integer::compareTo);
System.out.println("Nombre maximum : " + maxNum.get());

Trouvez l'élément minimum de la liste à l'aide de l'API Stream.

Optional<Integer> minNum = numbers.stream().min(Integer::compareTo);
System.out.println("Nombre minimum : " + minNum.get());

Maintenant, compilez et exécutez ce code à l'aide de la commande suivante :

javac ~/project/LambdaExpressions.java && java LambdaExpressions

La sortie devrait être :

Nombre maximum : 30
Nombre minimum : 2

Utilisez forEach() pour imprimer les éléments d'une liste

Nous pouvons utiliser la méthode forEach() de l'API Stream pour itérer sur une liste et effectuer une action sur chaque élément.

Créez une liste de chaînes de caractères contenant quelques noms pour travailler.

List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave");

Affichez tous les éléments de la liste à l'aide de la méthode forEach().

names.stream().forEach(System.out::println);

Maintenant, compilez et exécutez ce code à l'aide de la commande suivante :

javac ~/project/LambdaExpressions.java && java LambdaExpressions

La sortie devrait être :

Alice
Bob
Charlie
Dave

Utilisez l'API Stream pour trier une collection

L'API Stream peut être utilisée pour trier une collection. Dans cette étape, nous allons apprendre à trier une liste d'entiers par ordre croissant.

Créez une liste d'entiers avec laquelle travailler.

List<Integer> numbers = Arrays.asList(1, 3, 2, 4, 5);

Triez la liste par ordre croissant à l'aide de la méthode sorted() de l'API Stream.

numbers.stream().sorted().forEach(System.out::println);

Maintenant, compilez et exécutez ce code à l'aide de la commande suivante :

javac ~/project/LambdaExpressions.java && java LambdaExpressions

La sortie devrait être :

1
2
3
4
5

Utilisez l'API Stream pour filtrer et trier une collection

Dans cette étape, nous allons utiliser l'API Stream pour filtrer et trier une collection d'entiers.

Créez une liste d'entiers avec laquelle travailler.

List<Integer> numbers = Arrays.asList(10, 2, 30, 5, 4, 20);

Filtrer uniquement les nombres pairs et les trier par ordre décroissant à l'aide de la méthode sorted().

numbers.stream().filter(n -> n % 2 == 0).sorted(Comparator.reverseOrder()).forEach(System.out::println);

Maintenant, compilez et exécutez ce code à l'aide de la commande suivante :

javac ~/project/LambdaExpressions.java && java LambdaExpressions

La sortie devrait être :

30
20
10
4
2

Utilisez l'API Stream pour obtenir la moyenne d'une collection

Dans cette étape, nous allons apprendre à utiliser l'API Stream pour obtenir la moyenne d'une collection d'entiers.

Créez une liste d'entiers avec laquelle travailler.

List<Integer> numbers = Arrays.asList(10, 2, 30, 5, 4, 20);

Utilisez la méthode average() de l'API Stream pour obtenir la moyenne de la liste.

OptionalDouble avg = numbers.stream().mapToInt(Integer::intValue).average();
System.out.println("Moyenne : " + avg.getAsDouble());

Maintenant, compilez et exécutez ce code à l'aide de la commande suivante :

javac ~/project/LambdaExpressions.java && java LambdaExpressions

La sortie devrait être :

Moyenne : 12,0

Créez un objet Optional et vérifiez s'il est vide ou non

Dans cette étape, nous allons apprendre ce qu'est Optional et comment créer un objet Optional.

Créez un objet Optional d'une chaîne de caractères vide.

Optional<String> emptyString = Optional.empty();

Vérifiez si cet objet est vide à l'aide de la méthode isPresent().

if(emptyString.isPresent()) {
    System.out.println(emptyString.get());
}
else {
    System.out.println("Aucune valeur");
}

Maintenant, compilez et exécutez ce code à l'aide de la commande suivante :

javac ~/project/LambdaExpressions.java && java LambdaExpressions

La sortie devrait être :

Aucune valeur

Sommaire

Dans ce laboratoire, nous avons appris à utiliser deux des fonctionnalités les plus importantes de Java 8 - les expressions Lambda et l'API Stream. Nous avons appris comment utiliser les expressions Lambda pour créer des fonctions anonymes, comment utiliser l'API Stream pour effectuer une séquence d'opérations sur une collection, et comment créer des objets Optional et vérifier s'ils sont vides ou non. Nous avons également vu comment utiliser l'API Stream pour trier, filtrer et obtenir la moyenne d'une collection. En maîtrisant ces fonctionnalités, nous pouvons écrire du code efficace et propre avec Java 8.