Hello!
I recently discovered the java.text.ListFormat API which appeared since
Java 22. It's great and useful, but I feel that it misses a Collector. It's
very possible that the original strings are available in the Stream, rather
than in the List, and it would be nice to be able to join the stream
directly, without intermediate List, like we can do with
Collectors.joining(). So I would propose adding a new instance method to
ListFormat, like
public Collector<String, ?, String> formatting() {...}
or probably, to be more consistent with Collectors.joining(), it could be
public Collector<CharSequence, ?, String> formatting() {...}
The initial implementation could be trivial:
public Collector<CharSequence, ?, String> formatting() {
return
Collectors.collectingAndThen(Collectors.mapping(CharSequence::toString,
Collectors.toList()), this::format);
}
Or without 'mapping' step, if we want to limit the input to strings.
What do you think?
With best regards,
Tagir Valeev