Il semble que j'ai du mal à comprendre comment Java compose les opérations de flux dans un pipeline de flux.
Lors de l'exécution du code suivant
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 imprime uniquement 4
. L' StringBuilder
objet a toujours la valeur ""
.
Lorsque j'ajoute l'opération de filtrage: 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 sortie devient:
4
1234
Comment cette opération de filtrage apparemment redondante modifie-t-elle le comportement du pipeline de flux composé?