Hacer copia de una matriz

Resuelto badcoder asked hace 13 años • 0 respuestas

Tengo una matriz aque se actualiza constantemente. Digamos a = [1,2,3,4,5]. Necesito hacer un duplicado exacto ay llamarlo b. Si acambiara a [6,7,8,9,10], bdebería seguir siendo [1,2,3,4,5]. ¿Cuál es la mejor manera de hacer esto? Probé un forbucle como:

for(int i=0; i<5; i++) {
    b[i]=a[i];
}

pero eso no parece funcionar correctamente. No utilice términos avanzados como copia profunda, etc., porque no sé lo que eso significa.

badcoder avatar Apr 26 '11 10:04 badcoder
Aceptado

Puedes intentar usar System.arraycopy()

int[] src  = new int[]{1,2,3,4,5};
int[] dest = new int[5];

System.arraycopy( src, 0, dest, 0, src.length );

Pero probablemente sea mejor usar clone() en la mayoría de los casos:

int[] src = ...
int[] dest = src.clone();
Bala R avatar Apr 26 '2011 03:04 Bala R

puedes usar

int[] a = new int[]{1,2,3,4,5};
int[] b = a.clone();

también.

MeBigFatGuy avatar Apr 26 '2011 04:04 MeBigFatGuy

Si desea hacer una copia de:

int[] a = {1,2,3,4,5};

Este es el camino a seguir:

int[] b = Arrays.copyOf(a, a.length);

Arrays.copyOfpuede ser más rápido que a.clone()en matrices pequeñas. Ambos copian elementos con la misma rapidez, pero clone() regresa, Objectpor lo que el compilador tiene que insertar una conversión implícita en int[]. Puedes verlo en el código de bytes, algo como esto:

ALOAD 1
INVOKEVIRTUAL [I.clone ()Ljava/lang/Object;
CHECKCAST [I
ASTORE 2
Evgeniy Dorofeev avatar Apr 12 '2013 04:04 Evgeniy Dorofeev