Parece que estou tendo problemas para entender como o Java compõe operações de fluxo em um pipeline de fluxo.
Ao executar o seguinte 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());
}
O console apenas imprime 4
. O StringBuilder
objeto ainda tem o valor ""
.
Quando adiciono a operação 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());
}
A saída muda para:
4
1234
Como essa operação de filtro aparentemente redundante altera o comportamento do pipeline de fluxo composto?