相关疑难解决方法(0)

未按计数评估中间流操作

我似乎无法理解 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)

这个看似多余的过滤操作如何改变组合流管道的行为?

java java-stream

36
推荐指数
2
解决办法
1093
查看次数

标签 统计

java ×1

java-stream ×1