RFR: 5015163 "(str) String merge/join that is the inverse of String.split()" into JDK 8
Stuart Marks
stuart.marks at oracle.com
Wed May 2 06:39:22 UTC 2012
On 5/1/12 10:16 AM, Rémi Forax wrote:
> On 05/01/2012 05:50 PM, Jim Gish wrote:
>> Should I proceed with improvements to String.join() or wait, for example,
>> until the lambda array support is there?
>
> better to ask Brian Goetz :)
Hi guys, this came back around to me internally to Oracle since I've been
kicking around some similar ideas in the context of lambda, though nothing has
made it to the lambda repos yet.
Unfortunately, while I don't think there is a direct dependency of String.join
on any of the lambda stuff, we will probably want to coordinate the creation of
these APIs. We don't want to put stuff into the mainline now, and then pull it
out or retrofit it when the lambda stuff gets integrated later. So, strange as
it may seem, it may be better to work on this in the lambda forest.
It's not clear to me that we have to move the discussion over to lambda-dev
though. This is at least as much about libraries as it is about lambda.
(For those watching at home, the background regarding how this relates to
lambda is described in [1] with some discussion starting at [2]. In a nutshell,
the "lambdafied" libraries approach we're taking is to use lambda expressions
to operate on streams of values. Right now streams look like Iterables but this
is going to change. We want to be able to join streams of stringy things as
well as arrays and collections.)
It's fun to think about how joining would work in a lambda/streamy kind of
world, e.g.
stream.infix(",").join(new StringBuilder()).toString()
or some such. There are a bunch of issues to consider here though, such as
special-casing of types in the input stream, e.g., append CharSequence directly
instead of calling toString(), treat int value as a Unicode code point, etc.
There are also issues about the result type: StringBuilder? String? Appendable?
As much as I like the lambda stuff, though, I don't think having stream-based
joining will supplant the need to have a good old-fashioned
String.join(",", ...bunch of strings...)
s'marks
[1] http://cr.openjdk.java.net/~briangoetz/lambda/collections-overview.html
[2] http://mail.openjdk.java.net/pipermail/lambda-dev/2012-April/004758.html
More information about the core-libs-dev
mailing list