A DESCRIPTION OF THE PROBLEM :
In the current implementation of String.join(CharSequence, Iterable), the temp array `elems` is always initialized with a length of 8. It will cause many array recreations when the Iterable contains more than 8 elements. Furthermore, it's very common that an Iterable is also a Collection. So if the Iterable is an instance of Collection, the initial length of the array can be `((Collection<?>)elements).size()`. It will not change the current behavior even if the Collection is modified asynchronously.
In the current implementation of String.join(CharSequence, Iterable), the temp array `elems` is always initialized with a length of 8. It will cause many array recreations when the Iterable contains more than 8 elements. Furthermore, it's very common that an Iterable is also a Collection. So if the Iterable is an instance of Collection, the initial length of the array can be `((Collection<?>)elements).size()`. It will not change the current behavior even if the Collection is modified asynchronously.
- links to
-
Review openjdk/jdk/13383