Quelle est la différence entre les opérations terminales et non terminales dans l'API Stream en termes de leurs fonctions et de leur but?
sobes.tech IA
Réponse de l'IA
Dans l'API Stream, les opérations terminales et non terminales diffèrent par leur but et leur comportement :
-
Opérations non terminales (intermediate) — ce sont des opérations qui renvoient un nouveau stream et permettent de construire une chaîne de transformations. Elles sont paresseuses, c'est-à-dire qu'elles ne s'exécutent pas immédiatement, mais uniquement lors de l'appel d'une opération terminale. Exemples :
filter(),map(),sorted(),distinct(). -
Opérations terminales (terminal) — terminent la chaîne d'opérations et lancent le traitement des données. Elles renvoient un résultat (par exemple, une collection, un nombre, void). Après une opération terminale, le stream est considéré comme fermé et ne peut pas être réutilisé. Exemples :
collect(),forEach(),reduce(),count().
Exemple :
List<String> result = list.stream()
.filter(s -> s.startsWith("A")) // non terminal
.map(String::toUpperCase) // non terminal
.collect(Collectors.toList()); // terminal
Ici, la filtration et la transformation ne sont pas effectuées immédiatement, mais seulement lors de l'appel à collect(), qui lance le traitement et retourne la liste finale.