<aside> 🔥

Regla: en los ejercicios no uses for ni while.

</aside>

1) ¿Qué es un Stream, en palabras sencillas?

Un Stream es una forma de decir: “Voy a leer los elementos de esta lista y aplicar una serie de pasos para sacar un resultado”.

2) Estructura típica de un Stream

List lista;

lista.stream()
    .paso1(...)
    .paso2(...)
    .resultadoFinal(...);
List<String> lista = List.of("Italia","España","Portugal","Irlanda","Noruega");
        
lista.stream()
		.filter(pais -> pais.endsWith("a")) // Me quedo con los paises que terminan en a
		.sorted() // Ordeno los paises que han cumplido la condición anterior
		.forEach(pais -> System.out.println(pais)); // Muestro por pantalla

Dos tipos de operaciones

Intermedias (preparan el trabajo, siguen siendo stream):

Finales / terminales (ejecutan y devuelven resultado):

3) Lambdas en Java ( n -> n > 100 )

Una lambda en Java es una forma corta de escribir una función (un trocito de código que recibe datos y devuelve algo, o ejecuta una acción) sin tener que crear una clase ni un método con nombre.

Descripción Lambda
Dado un n, devuelve true si n > 10 (si no, devuelve false). n -> n > 10
Dado un número n, devuelve true si n es negativo n -> n < 0
Dado un String s, devuelve el mismo texto en mayúsculas s -> s.toUpperCase()
Quedarme con String cuya longitud sea > 5 s -> s.length() > 5
Convertir un número a su cuadrado n -> n * n

La expresión

n -> n > 10

equivale a la siguiente función

boolean test(Integer n) {
    return n > 10;
}