Java 8中的顺序流是否在调用collect时使用了combiner参数?

时间:2014-06-13 09:49:32

标签: java java-8 java-stream

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

1 个答案:

答案 0 :(得分:25)

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

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

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