Hi Rémi, Yes, this was something I was hoping to get into the preview, but I wasn't sure where that conversion should end up.
There are a few different places where it might go: Gatherer.of(Collector) Gatherers.collect(Collector) Collector.asGatherer() Collectors.gather(Collector) I wasn't really convinced where it should go, and I was hesitant to making any changes to existing public interfaces as a "nice to have", so I opted to leave it out for now. I think people would prefer to see it on Collector as a default method, but as I said before, making changes to Collector wasn't something I was ready to prioritize for the (first) JEP. Cheers, √ Viktor Klang Software Architect, Java Platform Group Oracle ________________________________ From: core-libs-dev <core-libs-dev-r...@openjdk.org> on behalf of Remi Forax <fo...@univ-mlv.fr> Sent: Wednesday, 17 January 2024 17:08 To: core-libs-dev <core-libs-...@openjdk.java.net> Subject: Seing a Collector as a Gatherer Hello, I may have overlook that, but it seems there is no method to see a Collector as a Gatherer. A Gatherer is more general than a Collector and a Gatherer with a greedy integrator that does not call Downstream.push in the intergator and only once is the finisher is basicaly a Collector. In code: <E, A, T> Gatherer<E, A, T> asGatherer(Collector<? super E, A, ? extends T> collector) { var supplier = collector.supplier(); var accumulator = collector.accumulator(); var combiner = collector.combiner(); var finisher = collector.finisher(); return Gatherer.of(supplier, Gatherer.Integrator.ofGreedy((state, element, _) -> { accumulator.accept(state, element); return true; }), combiner, (state, downstream) -> downstream.push(finisher.apply(state))); } This is eaxctly how Gatherer.fold() works. Is there a reason why such method does not exist ? regards, Rémi