我正在实现一个Spliterator,它通过让trySplit()返回null来显式限制并行化。实现estimateSize()会对此分离器产生的流提供任何性能改进吗?还是估计的大小仅对并行有用?

编辑:为了明确起见,我专门询问估计的大小。换句话说,我的分隔符没有SIZED特性。

最佳答案

查看有关分隔符特性的调用层次结构可以发现它至少与stream.toArray()性能相关

另外,内部流实现中有一个等效标志似乎用于排序:

因此,除了并行流操作外,大小估计似乎还用于这两个操作。

我并没有要求穷举,因此仅以这些为例。

没有SIZED特性,我只能找到与并行执行流管道有关的对estimateSize()的调用。

当然,这可能会在将来发生变化,或者与标准JDK可能采取不同的行为相比,另一种Stream实现可能会发生变化。

10-06 02:50