Существует два хороших способа копирования массива - использовать клон и System.arraycopy()
.
Вот как использовать клон для 2D-случая:
int [][] myInt = new int[matrix.length][];
for(int i = 0; i < matrix.length; i++)
myInt[i] = matrix[i].clone();
Для системы. arraycopy (), вы используете:
int [][] myInt = new int[matrix.length][];
for(int i = 0; i < matrix.length; i++)
{
int[] aMatrix = matrix[i];
int aLength = aMatrix.length;
myInt[i] = new int[aLength];
System.arraycopy(aMatrix, 0, myInt[i], 0, aLength);
}
У меня нет теста, но я могу поспорить с моими 2 центами, что они быстрее и меньше склонны к ошибкам , чем делают это сам. Особенно, System.arraycopy()
, поскольку он реализован в собственном коде.
Надеюсь, это поможет.
Изменить: исправлена ошибка.