Java 8中的顺序流是否在调用collect时使用组合器参数?

如果我在顺序流上调用collect(例如,从调用Collection.stream()),那么它将使用我传递的汇编参数来收集吗? 我猜不是,但我在文档中看不到任何内容。 如果我是正确的,那么似乎不幸的是必须提供我知道不会被使用的东西(如果我知道它是顺序流)。

请记住针对接口规范进行开发 – 而不是针对实现。 实现可能会随着下一个Java版本而改变,而规范应该保持稳定。

该规范不区分顺序流和并行流。 因此,您应该假设可以使用组合器 。 实际上,有很好的例子表明顺序流的组合器可以提高性能。 例如,以下reduce操作连接字符串列表。 在没有组合器的情况下执行代码具有二次复杂性。 使用组合器的智能执行可以按幅度减少运行时间。

List tokens = ...; String result = tokens.stream().reduce("", String::concat, String::concat);