RFR: String.join(), StringJoiner additions

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 <code></code>. 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::
>>
>> - <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.gish at oracle.com
>>>
>




More information about the core-libs-dev mailing list