我似乎无法理解 Java 如何将流操作组合到流管道中。
执行以下代码时
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());
}
Run Code Online (Sandbox Code Playgroud)
控制台只打印4. 该StringBuilder对象仍然具有值""。
当我添加过滤操作时: 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());
}
Run Code Online (Sandbox Code Playgroud)
输出更改为:
4
1234
Run Code Online (Sandbox Code Playgroud)
这个看似多余的过滤操作如何改变组合流管道的行为?