That was a nice idea, but you don't want to change the value when you do toString(). Otherwise, if you subsequently add a new element, you're hosed because you've already added on the suffix.

Jim

On 04/17/2013 09:20 PM, Roger Riggs wrote:
Hi,

Can I suggest that the StringJoiner.toString() method explicitly append the suffix
to the existing StringBuilder.

152 return (value != null ? value.toString() + suffix : emptyValue);

Currently it will go to the trouble of creating a String from the builder and then
transparently create another StringBuilder to do the concatenation.

152 return (value != null ? value.append(suffix).toString() : emptyValue);

or something similar.

The overhead of StringJoiner supporting prefix and suffix is lower than doing it separately in terms of object allocations and garbage and all places that would need write their
own code to do the concatenation.

Roger


On 4/17/13 5:49 PM, Jim Gish wrote:
Here's an update: http://cr.openjdk.java.net/~jgish/Bugs-5015163-7172553/ <http://cr.openjdk.java.net/%7Ejgish/Bugs-5015163-7172553/>

Jim

On 04/17/2013 03:15 PM, Mike Duigou wrote:
String::

line 1253: This should use {@code } rather than <code></code>. I think regular spaces are OK as well. &nbsp; seems inappropriate.

lines 2425/2467: elements may not be null either.

I can tell you (or maybe it's just me) are itching to change :

for (CharSequence cs: elements) {
2477             joiner.add(cs);
2478         }

to:

elements.forEach(joiner::add);

StringJoiner::

- <blockquote> isn't needed around <pre> as it's already a <div> you probably mean to do

<pre> {@code
...
}</pre>

for code samples.

- It would be nice if the empty output generation in three arg constructor could be suppressed unless needed. Perhaps a special (not null please!) sentinel value?

- Four arg constructor doesn't include emptyOutput in @throws NPE


On Apr 11 2013, at 15:33 , Jim Gish wrote:

Please review http://cr.openjdk.java.net/~jgish/Bugs-5015163-7175206-7172553/ <http://cr.openjdk.java.net/%7Ejgish/Bugs-5015163-7175206-7172553/>

These are changes that we made in lambda that we're now bringing into JDK8.

I've made a couple of additions - making StringJoiner final and adding a couple of constructors to set the emptyOutput chars.

Thanks,
   Jim

--
Jim Gish | Consulting Member of Technical Staff | +1.781.442.0304
Oracle Java Platform Group | Core Libraries Team
35 Network Drive
Burlington, MA 01803
jim.g...@oracle.com




--
Jim Gish | Consulting Member of Technical Staff | +1.781.442.0304
Oracle Java Platform Group | Core Libraries Team
35 Network Drive
Burlington, MA 01803
jim.g...@oracle.com

Reply via email to