RFR: JDK-8133680 add Stream.foldLeft() terminal operation

Brian Goetz brian.goetz at oracle.com
Tue Aug 15 14:49:44 UTC 2017

It's an overstatement to say that forEachOrdered/foldLeft cannot exploit 
parallelism.  If I have a stream:

           .map(e -> expensiveFn(e))
           .forEachOrdered(e -> ...);

We still can (and do) perform the mapping in parallel even if we cannot 
perform the folding step yet.  See ForEachOps.ForEachOrderedTask.

On 8/13/2017 3:45 PM, Remi Forax wrote:
> Hi Tagir,
> foldLeft (and foldRight) were intentionally not included in the Stream API because as you know, their semantics is too strong to be useful for parallel streams.
> regards,
> Rémi
> ----- Mail original -----
>> De: "Tagir Valeev" <amaembo at gmail.com>
>> À: "core-libs-dev" <core-libs-dev at openjdk.java.net>
>> Envoyé: Dimanche 13 Août 2017 15:27:36
>> Objet: RFR: JDK-8133680 add Stream.foldLeft() terminal operation
>> Please review the preliminary implementation for Stream foldLeft and
>> foldRight operations:
>> http://cr.openjdk.java.net/~tvaleev/webrev/8133680/r1/
>> This implementation has no tests yet. Before writing them I'd like to
>> be sure that this enhancement could be accepted in general (or
>> probably foldLeft is accepted and foldRight is not?) Could anybody
>> sponsor it when it will be complete?
>> Thank you in advance!
>> Tagir Valeev.

More information about the core-libs-dev mailing list