Sembra che non riesca a capire come Java componga le operazioni dello stream in una pipeline dello stream.
Quando si esegue il seguente codice
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 console stampa solo 4
. L' StringBuilder
oggetto ha ancora il valore ""
.
Quando aggiungo l'operazione di 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());
}
L'output cambia in:
4
1234
In che modo questa operazione di filtro apparentemente ridondante modifica il comportamento della pipeline del flusso composta?