toArray
with non-zero sized array argument JAVA-P0335288
289 @Override
290 public <T> T[] toArray(T[] a) {
291 return set.toArray(a);292 }
293
294 @Override
273
274 @Override
275 public <T> T[] toArray(T[] a) {
276 return set.toArray(a);277 }
278
279 @Override
273
274 @Override
275 public <T> T[] toArray(T[] a) {
276 return set.toArray(a);277 }
278
279 @Override
292
293 @Override
294 public <T> T[] toArray(T[] a) {
295 return children.toArray(a);296 }
297
298 @Override
292
293 @Override
294 public <T> T[] toArray(T[] a) {
295 return children.toArray(a);296 }
297
298 @Override
This method uses toArray
with a non-zero sized array argument. This is less efficient than passing a zero-sized array.
This method invokes toArray
on a Collection
object, and passes in an array with a size greater than zero as an argument. It used to be that this was faster than providing an array of size zero (new Type[0]
) in older versions of Java prior to 6. This is because the cost of performing reflection operations was quite high in old Java versions.
This is no longer the case, and providing a zero sized array is now just as fast (or even faster) than providing an array of the same size as the original collection. It is now generally better to use a zero-length array as the argument to toArray
.
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Integer[] arr1 = list.toArray(new Integer[list.size()]); // Inefficient
Integer[] arr2 = list.toArray(new Integer[0]); // Better