Ответ 1
Старый школьный путь:
public static void java.lang.System.arraycopy(Object src, int srcPos,
Object dest, int destPos, int length)
Это копирует из одного существующего массива в другой. Вы должны сами выделить новый массив... при условии, что вы делаете копию массива.
Начиная с JDK 6 класс java.util.Arrays
имеет ряд методов copyOf
для создания копий массивов с новым размером. Те, которые имеют значение, следующие:
public static <T> T[] copyOf(T[] original, int newLength)
и
public static <T,U> T[] copyOf(U[] original, int newLength,
Class<? extends T[]> newType)
Этот первый создает копию с использованием исходного типа массива, а второй создает копию с другим типом массива.
Обратите внимание, что как arraycopy, так и 3 аргумента copyOf должны проверять типы каждого из элементов исходного (исходного) массива на тип целевого массива. Таким образом, оба могут исключать исключения типа. 2 аргумента copyOf (по крайней мере, теоретически) не требует проверки типа и, следовательно, должен быть (теоретически) быстрее. На практике относительная производительность будет зависимой от реализации. Например, arraycopy
часто получает специальное лечение JVM.