Каков наилучший способ (элегантный/эффективный) скопировать два массива в новый?Скопируйте 2 массив в новый
Привет,
F
Каков наилучший способ (элегантный/эффективный) скопировать два массива в новый?Скопируйте 2 массив в новый
Привет,
F
Использование System.arraycopy
использует преимущества базового оборудования для выполнения копирования массива настолько эффективно, насколько это возможно.
В контексте вопроса вам нужно будет позвонить System.arraycopy
дважды; например
int[] dest = new int[10];
int[] src1 = new int[5];
int[] src2 = new int[5];
// Populate source arrays with test data.
for (int i=0; i<5; ++i) {
src1[i] = i;
src2[i] = i + 100;
}
System.arraycopy(src1, 0, dest, 0, src1.length);
System.arraycopy(src2, 0, dest, src1.length, src2.length);
Вы можете использовать [System.arraycopy] [1], как показано here.
[1]: http://download.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#arraycopy(java.lang.Object, INT, java.lang.Object, Int, Int)
Моя репутация не позволяет мне прокомментировать ответ Адамским, но есть ошибка в этой строке:
System.arraycopy(src2, 0, dest, src1.length - 1, src2.length);
с src1.length - 1 в качестве аргумента destPos, вы перезаписать последний элемент, вставленный из src1 массива. В этом случае вы переписываете элемент на индекс 4, который является 5-м элементом массива.
Этот код может быть проще понять:
int[] array1 = { 1, 2, 3 };
int[] array2 = { 4, 5, 6, 7 };
int[] array3 = new int[ array1.length + array2.length ];
System.arraycopy(array1, 0, array3, 0, array1.length);
System.arraycopy(array2, 0, array3, array1.length, array2.length);
for (int i = 0; i < array3.length; i++) {
System.out.print(array3[i] + ", ");
}
вы должны по крайней мере попытаться найти немного, прежде чем отправлять вопрос .. – posdef 2010-11-23 10:14:22
почему вниз голосование? stackoverflow отвечает на вопросы, которые должны иметь дело с программированием – Tyzak 2010-11-23 10:54:44