Tenho uma array “a” e uma array “b”;
double [][] a = {{1,2,3},{4,5,6},{7,8,9}};
double [][] b = new double[3][3];
Quero fazer uma cópia da array “a” para a array “b”.
O código abaixo faz com que “b” passe a apontar para o endereço de “a”, com isso, toda modificação que eu fizer em “b” é refletida também em “a”. Pois na verdade são dois ponteiros apontando para a mesma região na memória.
b = a;
Já os códigos abaixo fazem com que “a” e “b” apontem para posições de memória diferentes, porém o conteúdo dessas posições de memória apontam para o mesmo local. Pois por ser um array bi-dimensional, ele é um ponteiro que aponta para um array de ponteiros.
Com isso, as alterações em “b” continuam alterando “a”.
b = a.clone();
OU
System.arraycopy(a, 0, b, 0, a.length);
Existe maneira elegante de fazer isso ou tenho que fazer da forma abaixo?
for (int i=0; i < a.length; i++) {
for (int j=0; j < 3; j++) {
b[i][j] = a[i][j];
}
}
OU
for (int i=0; i < a.length; i++) {
b[i] = a[i].clone();
}
OU Ainda…
for (int i=0; i < a.length; i++) {
System.arraycopy(a[i],0,b[i],0,a.length);
}
Obs: Não quero usar Lista nem nenhum outro tipo de objeto/estrutura de dados/abstração. Quero usar array.