Es scheint, dass ich Probleme habe zu verstehen, wie Java Stream-Operationen zu einer Stream-Pipeline zusammensetzt.
Bei der Ausführung des folgenden Codes
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());
}
Die Konsole druckt nur 4
. Das StringBuilder
Objekt hat noch den Wert ""
.
Wenn ich die Filteroperation hinzufüge: 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());
}
Die Ausgabe ändert sich zu:
4
1234
Wie ändert diese scheinbar redundante Filteroperation das Verhalten der zusammengesetzten Stream-Pipeline?