Lambda en Java
Passez une action courte à forEach avec une flèche. Dans Cue.java, gardez la classe publique Cue, importez java.util.ArrayList, stockez "oak" dans une liste typée, et appelez names.forEach(n -> System.out.println(n));. Compilez avec javac Cue.java et lancez java Cue. L'écran doit montrer oak. Une seconde démo ajoute "pine" pour que l'écran montre oak, puis pine. Laissez Streams optionnel pour la page suivante. Cette leçon est une lambda passée à forEach, pas une démo Generics avec get(0) et pas des args en ligne de commande.
Un élément, une impression lambda
Ouvrez Cue.java. Gardez le nom de classe publique Cue. Supprimez les restes de démos Generics Bin, les lancements Program Arguments Flag, les invites Scanner Box, et l'historique Shelf s'ils enterrent l'histoire lambda. Le programme ne doit pas attendre une saisie clavier et ne doit pas exiger des mots de lancement.
Ajoutez l'import en tête :
import java.util.ArrayList;
Dans Cue.main, construisez une liste typée, ajoutez un mot, et passez une lambda à forEach :
ArrayList<String> names = new ArrayList<>();
names.add("oak");
names.forEach(n -> System.out.println(n));
La partie n -> System.out.println(n) est la lambda. n est le nom du paramètre pour un élément. La flèche -> pointe vers le corps exécuté pour cet élément. forEach appelle ce corps une fois pour "oak". L'écran montre oak.
import java.util.ArrayList;
public class Cue {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<>();
names.add("oak");
names.forEach(n -> System.out.println(n));
}
}
Depuis le dossier qui contient Cue.java, lancez javac Cue.java. Quand accolades et points-virgules concordent, javac n'affiche pas sa propre ligne. Puis lancez java Cue — pas java Cue.java. Gardez une seule classe publique pour que le nom corresponde à Cue.
Parcourez l'exécution une fois. Java démarre à Cue.main. La liste contient "oak". forEach reçoit la lambda. Pour le premier (et seul) élément, n vaut "oak" et println écrit oak. Rien n'appelle get(0) dans cette forme pédagogique. Rien n'affiche 3 depuis une démo Integer Bin. Rien ne lit args[0].
Dites la règle débutant en regardant l'écran : forEach parcourt la liste ; la lambda est l'action par élément ; la flèche sépare le paramètre du corps. N'inventez pas de pipelines Streams sur cette page. Streams attend la prochaine leçon optionnelle. Ne remplacez pas la lambda par une méthode nommée complète dans ce fichier pédagogique — gardez la forme avec flèche.
Si vous voyez encore seulement oak via names.get(0) dans un fichier Bin restant, passez à Cue et gardez la ligne forEach. Si javac rejette la flèche, vérifiez que vous avez tapé -> et que la lambda se trouve dans forEach(...).
Deux éléments, la même lambda
Gardez la même classe publique Cue. Ajoutez un second mot avant forEach :
names.add("oak");
names.add("pine");
names.forEach(n -> System.out.println(n));
Recompilez avec javac Cue.java et lancez java Cue. L'écran montre oak, puis pine. forEach exécute la lambda une fois par élément dans l'ordre. Le corps de la lambda ne change pas. Seule la longueur de la liste a changé.
import java.util.ArrayList;
public class Cue {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<>();
names.add("oak");
names.add("pine");
names.forEach(n -> System.out.println(n));
}
}
Parcourez l'exécution une fois. Premier appel : n vaut "oak", affichez oak. Deuxième appel : n vaut "pine", affichez pine. Gardez les deux démos comme deux formes pédagogiques. D'abord prouvez une impression lambda sur un mot. Puis prouvez la même lambda sur deux éléments. Les deux formes partagent import, liste typée, et n -> System.out.println(n).
Si vous affichez toute la liste avec println(names) au lieu de forEach, vous voyez crochets et virgules — c'est une habitude différente. Cette page garde une impression par élément via la lambda.
Lambda n'est ni Generics seul ni Streams
Les generics nommaient le type d'élément dans ArrayList<String>. La lambda donne à forEach une action courte sans écrire une méthode nommée séparée sur cette page. Streams enchaînera plus d'étapes sur la liste lors d'une page optionnelle ultérieure. Ne mélangez pas ces trois rôles dans un seul fichier débutant aujourd'hui.
oak ici est un élément de liste visité par forEach. Ce n'est pas args[0] depuis Flag et pas une réponse Scanner. Quand un fichier Bin restant n'affiche encore que get(0), laissez-le comme historique et gardez la ligne forEach de Cue. Quand un fichier Flag exige encore java Flag oak, laissez cette habitude de lancement de côté et lancez simplement java Cue.
Sans la flèche, javac ne peut pas traiter l'action comme une lambda. Sans forEach, la lambda n'a nulle part où s'exécuter dans cette forme pédagogique. Gardez les deux pièces ensemble pendant la pratique. Gardez la syntaxe Streams telle que .stream().map hors de cette page jusqu'à cette leçon, même si vous avez vu le mot Stream ailleurs.
Vérifications du dossier avant Streams
Listez le dossier après une compilation réussie. Vous devez voir Cue.java et Cue.class ensemble. Modifiez la source, enregistrez, lancez javac Cue.java, puis java Cue. Un .class obsolète peut montrer un ancien écran d'une ligne si vous sautez la compilation après avoir ajouté "pine".
Si javac se plaint de classes publiques en double, gardez seulement Cue publique. Si l'écran montre [oak, pine] sur une ligne, vous avez affiché l'objet liste — revenez à forEach avec println dans la lambda. Si rien ne s'affiche, confirmez que add a été appelé avant forEach.
Ne collez pas le get(0) de Bin comme remplacement de la lambda sur cette page. Ne collez pas les mots de lancement Flag dans la commande d'exécution. Le travail lambda optionnel, c'est forEach avec un corps à flèche.
Avant Streams optionnel
Vous pouvez garder la classe publique Cue, importer ArrayList, ajouter "oak", appeler names.forEach(n -> System.out.println(n));, voir oak, puis ajouter "pine" et voir oak puis pine. Compilez avec javac Cue.java et lancez java Cue. La page optionnelle suivante est Streams.
Gardez les démos Cue pour une paire lambda claire. Gardez les fichiers Generics Bin hors de cette page quand vous pratiquez forEach. Gardez les fichiers Program Arguments Flag hors de cette page quand vous pratiquez forEach. Gardez le travail Streams hors de cette page jusqu'à cette leçon. Ces habitudes sont le point de contrôle avant la suite. Quand l'écran d'un mot montre oak ou l'écran de deux mots montre oak puis pine, Lambda a fait son travail pour cette leçon et vous êtes prêt pour Streams si vous continuez le parcours optionnel.
Un dernier passage dans le dossier : un seul Cue public, import présent, ArrayList<String> typée, forEach avec n -> System.out.println(n), pas d'attente Scanner, pas de mots de lancement requis. Lancez encore javac Cue.java et java Cue sur la démo ouverte. Si l'écran montre toujours oak ou oak puis pine, la forme Lambda est solide et le cours peut passer à Streams optionnel sur la page suivante. Préférez une habitude forEach claire par lecture pour que chaque passage enseigne la même carte.
🧠 Testez Vos Connaissances
Testez Vos Connaissances
Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut