如果我在顺序流上调用 collect(例如,通过调用 Collection.stream()),那么它会使用我传递给 collect 的组合器参数吗?我想不是,但我在文档中什么也没看到。如果我是正确的,那么必须提供一些我知道不会被使用的东西(如果我知道它是一个顺序流)似乎很不幸。
最佳答案
记住要根据接口(interface)规范进行开发,而不是根据实现进行开发。下一个 Java 版本的实现可能会发生变化,而规范应该保持稳定。
规范不区分顺序流和并行流。因此,您应该假设可能会使用 combiner。实际上,有很好的例子表明用于顺序流的 combiners 可以提高性能。例如,以下 reduce 操作连接字符串列表。在没有 combiner 的情况下执行代码具有二次复杂度。使用 combiner 的智能执行可以大大减少运行时间。
List<String> tokens = ...;
String result = tokens.stream().reduce("", String::concat, String::concat);
关于java - Java 8 中的顺序流在调用 collect 时是否使用组合器参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24202473/