On Sat, 19 Sep 2026 10:05:35 GMT, Tagir F. Valeev <[email protected]> wrote:

>> Three options were suggested about the new API:
>> - ListFormat.formatting()
>> - ListFormat.toCollector()
>> - Collectors.listFormatting(ListFormat) static method
>> I feel it should belong to ListFormat, but I'm open to discussions.
>> 
>> For testing, I tested a couple of scenarios and a few corner cases (empty 
>> stream, null element, parallel stream) in a simple non-parameterized JUnit 
>> test. I believe that it's enough, given that the implementation is trivial, 
>> and ListFormat itself, as well as Stream API is already thoroughly tested by 
>> other tests. Tell me if you feel that some testing scenarios are missing, 
>> I'll happily add them.
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Tagir F. Valeev has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   8391789: Dumb error fix

Changes requested by [email protected] (no known OpenJDK username).

src/java.base/share/classes/java/util/stream/Collectors.java line 368:

> 366:      *
> 367:      * <p>The returned Collector requires at least one input element.
> 368:      * It will throw {@link IllegalArgumentException} if there are no 
> input elements.

This behavior is very unintuitive to me. I propose to return the empty string 
if there are no input elements, like the existing `joining` methods do. In 
particular, I'd expect to be able to refactor existing usages of `joining` by 
simply replacing `stream.collect(joining(delimiter))` with 
`stream.collect(joining(listFormat))`.

-------------

PR Review: https://git.openjdk.org/jdk/pull/32716#pullrequestreview-5256509589
PR Review Comment: https://git.openjdk.org/jdk/pull/32716#discussion_r4053854526

Reply via email to