RFR: String.join(), StringJoiner additions (original) (raw)

Roger Riggs Roger.Riggs at Oracle.com
Thu Apr 18 01:20:10 UTC 2013


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 . I think regular spaces are OK as well.   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:: -

isn't needed around
 as it's already a 
you
probably mean to do
 {@code
... } 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.gish at oracle.com



More information about the core-libs-dev mailing list