Parece que tengo problemas para entender cómo Java compone las operaciones de transmisión en una tubería de transmisión.
Al ejecutar el siguiente código
public
static void main(String[] args) {
StringBuilder sb = new StringBuilder();
var count = Stream.of(new String[]{"1", "2", "3", "4"})
.map(sb::append)
.count();
System.out.println(count);
System.out.println(sb.toString());
}
La consola solo imprime 4
. El StringBuilder
objeto todavía tiene el valor ""
.
Cuando agrego la operación de filtro: filter(s -> true)
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
var count = Stream.of(new String[]{"1", "2", "3", "4"})
.filter(s -> true)
.map(sb::append)
.count();
System.out.println(count);
System.out.println(sb.toString());
}
La salida cambia a:
4
1234
¿Cómo cambia esta operación de filtro aparentemente redundante el comportamiento de la tubería de flujo compuesta?