Javascript Copia Matriz De Objetos Sin Referencia

| | | | | | | | | | | | | | | | | | | | | |

Cuando trabaje con matrices en Java, puede decidir que desea crear una copia de una matriz. Por ejemplo, si tiene una cafeterìa y desea crear un men√∫ de temporada, es posible que desee crear una copia de su men√∫ original en la que se pueda basar el nuevo men√∫.

En Java, hay varias formas de copiar una matriz. Este tutorial explorará cuatro métodos comunes para copiar matrices y analizará còmo funcionan lìnea por lìnea. Después de leer este tutorial, serás un maestro en la copia de matrices en Java.

Matrices de Java

En Java, una matriz es un contenedor que contiene valores que contienen uno tipo √∫nico. Por ejemplo, una matriz se puede utilizar para almacenar una lista de libros o una lista de puntuaciones que los jugadores han obtenido en un juego de dardos.

Las matrices son √∫tiles cuando se desea trabajar con muchos juegos similares. valores porque puede almacenarlos todos en una colecciòn. Esto le permite condensar su còdigo y también ejecutar los mismos métodos en valores similares a la vez.

Suponga que queremos crear una matriz que almacene los cafés vendidos en nuestra cafeterìa. Podrìamos hacerlo usando este còdigo:

String [] coffees = {" Espresso & rdquo ;, " Mocha & rdquo ;, " Latte & rdquo ;, " Cappuccino & rdquo ;, " Vierta Over & rdquo ;, " Flat White "};

En este ejemplo, declaramos una matriz llamada cafés que almacena valores de cadena. Nuestra matriz contiene seis valores.

A cada elemento de una matriz se le asigna un n√∫mero de ìndice, comenzando desde 0, que se puede usar para hacer referencia a elementos individualmente en una matriz.

Ahora que hemos explorado los conceptos básicos de las matrices de Java, podemos analizar los métodos que puede utilizar para copiar el contenido de su matriz.

Copiar matriz usando el operador de asignaciòn

Uno de los métodos de clonaciòn más comunes usado para copiar una matriz es usar el operador de asignaciòn. & nbsp;

El operador de asignaciòn se usa para asignar un valor a una matriz. Al usar el operador de asignaciòn, podemos asignar el contenido de una matriz existente a una nueva variable, que creará una copia de nuestra matriz existente.

Regresemos a la cafeterìa. Supongamos que queremos crear una copia de la matriz cafés en la que basaremos nuestro men√∫ de café de verano. Podrìamos usar este còdigo para crear una copia de la matriz:

Nuestro còdigo devuelve:

Espresso, Mocha, Latte, Cappuccino, Pour Over, Flat White,

Analicemos nuestro còdigo. En la primera lìnea de còdigo dentro de nuestra clase CopyAssignment, declaramos una matriz llamada cafés que almacena nuestro men√∫ de café estándar.

En la siguiente lìnea, usamos la asignaciòn operador para asignar el valor de cafés a una nueva matriz llamada summer_coffees. Luego creamos un " for-each " bucle que itera a través de cada elemento en la matriz summer_coffees y lo imprime en la consola.

Hay una desventaja de usar este método: si cambia elementos de uno matriz, la otra matriz también se cambiará. Entonces, si cambiamos el valor de Latte a Summer Latte en nuestra lista de summer_coffees, nuestra lista de cafés también serìa cambiado.

Bucle para copiar matrices

El primer enfoque que discutimos para copiar una matriz & mdash; utilizando el operador de asignaciòn & mdash; crea lo que se llama una copia superficial. Este es el caso porque hemos asignado un objeto de matriz existente a uno nuevo, lo que significa que cuando cambiamos cualquier objeto, ambos cambiarán & mdash; los dos objetos están vinculados.

Sin embargo, a menudo necesitamos crear una copia profunda. Las copias profundas copian los valores de un objeto existente y crean un nuevo objeto de matriz. Cuando crea una copia profunda, puede cambiar su nueva matriz sin afectar la original.

Un enfoque que puede usarse para crear una copia profunda es crear un para bucle que itera a través del contenido de una matriz y crea una nueva matriz.

Supongamos que queremos crear una copia profunda de nuestra matriz cafés llamada summer_coffees. Esto debe ser una copia profunda porque planeamos cambiar el contenido de la matriz summer_coffees para reflejar los nuevos cafés que ofreceremos en los meses de verano. & nbsp;

Aquì está el còdigo que usarìamos para crear una copia profunda usando un bucle for:

Cuando ejecutamos nuestro còdigo, la salida es la siguiente:

[Espresso, Mocha, Latte, Cappuccino, Pour Over, Flat White]

Como puede ver, nuestro còdigo ha creado una copia de nuestra matriz original. Expliquemos paso a paso còmo funciona:

  1. Importamos java.util.Arrays que incluye el método toString (), y rsquo; Usaremos para imprimir nuestra matriz en la consola al final del ejemplo.
  1. Declaramos una matriz llamada cafés que almacena la lista de cafés en nuestro men√∫ estándar.
  2. Inicializamos una matriz llamada summer_coffees que almacenará seis valores.
  3. Usamos un bucle for para recorrer cada elemento en el coffees list.
  4. Cada vez que se ejecuta el ciclo for, al elemento en el valor de ìndice i en summer_coffees se le asignará el elemento en el valor de ìndice i en cafés.
  5. Usamos Arrays.toString () para convertir summer_coffees en una cadena, luego imprimimos la nueva matriz con nuestros elementos copiados en la consola.

Uso de los métodos de Java copyOfRange ()

El método copyOfRange () de Java se utiliza para copiar Arrays.copyOfRange () es parte de la clase java.util.Arrays . Aquì está la sintaxis del método copyOfRange ():

Analicemos la sintaxis del método copyOfRange ():

  1. DataType es el tipo de datos que almacenará la nueva matriz.
  2. newArray es el nombre de la nueva matriz.
  3. oldArray es la matriz cuyos valores desea copiar al newArray.
  4. indexPos es la posiciòn en la que debe comenzar la operaciòn de copia en el oldArray .
  5. longitud es la cantidad de valores que se deben copiar de oldArray a newArray.
  6. Veamos un ejemplo para demostrar el método copyOfRange () en acciòn. Digamos que queremos crear una copia de nuestra matriz cafés de antes. Podrìamos hacerlo usando este còdigo:

    Nuestro còdigo devuelve:

    Cafés de verano: [Espresso, Mocha, Latte, Cappuccino, Pour Over, Flat White]

    Analicemos nuestro còdigo:

    1. Importamos la biblioteca java.util.Arrays que almacena los métodos copyOfRange () y toString () que usaremos en nuestro ejemplo.
    2. Declaramos una matriz llamada cafés que almacena los cafés en nuestro men√∫ estándar.
    3. Declaramos una matriz llamada summer_coffees y usamos el método copyOfRange () para crear una copia de la matriz coffees. Los parámetros que especificamos son los siguientes:
      1. cafés es el nombre de la matriz que queremos copiar.
      2. especifica que queremos para copiar valores que comienzan en la posiciòn de ìndice 0 de la matriz coffees.
      3. coffees.length especifica que queremos copiar todos los valores de la lista.
    4. Imprimimos " Cafés de verano: " seguido de la matriz resultante llamada summer_coffees en la consola.

    Ahora hemos creado una copia de nuestra lista de " cafés llamada summer_coffees.

    Uso de métodos Java arraycopy ()

    El método arraycopy () se usa para copiar datos de un arreglo a otro arreglo. El método arraycopy () es parte de la clase System e incluye una serie de opciones que le permiten personalizar la copia que crea de una matriz existente.

    Aquì está la sintaxis de arraycopy ( ) método:

    System.arraycopy (sourceArray, startPos, newArray, newArrayStartingPos, length);

    Vamos a desglosar este método. copyarray () acepta cinco parámetros:

    • sourceArray es el nombre de la matriz que desea copiar.
    • initialPos es la posiciòn del ìndice desde la que desea comenzar a copiar valores en source_array.
    • newArray es el nombre de la nueva matriz donde los valores serán copias.
    • newArrayStartingPos es la posiciòn del ìndice en la que se deben agregar los valores copiados.
    • length es la n√∫mero de elementos que desea copiar al new_array.

    Regresemos a la cafeterìa. Supongamos que queremos copiar todos los valores de nuestra matriz cafés en una nueva matriz llamada summer_coffees. Podrìamos hacerlo usando este còdigo:

    Nuestro còdigo devuelve:

    Cafés de verano: [Espresso, Mocha, Latte, Cappuccino, Pour Over, Flat White]

    Analicemos nuestro còdigo paso a paso -step:

    1. Importamos el paquete java.util.Arrays al inicio de nuestro programa. Esto incluye el método toString () que usaremos para imprimir la copia de la matriz que creamos al final de nuestro programa.
    2. Declaramos una matriz llamada cafés que almacena los cafés en nuestro men√∫ estándar.
    3. Inicializamos una matriz llamada summer_coffees que contendrá 6 valores.
    4. Usamos arraycopy () para crear una copia de nuestra matriz cafés. Aquì están las parámetros que especificamos:
      1. cafés es la matriz que queremos copiar.
      2. es la posiciòn en la que queremos que nuestra copia comience en la matriz cafés.
      3. summer_coffees es la matriz en la que queremos que se agreguen nuestros valores copiados.
      4. es la posiciòn en la que queremos que los valores copiados comiencen a agregarse en summer_coffees array.
      5. coffees.length es el n√∫mero de elementos del array que queremos copiar. En este caso, usar coffees.length nos permite copiar cada elemento de la lista coffees.
    5. Imprimimos emitir un mensaje que indique " Cafés de verano: & ldquo ;, seguido de la lista de cafés de verano que hemos creado.

    Conclusiòn

    Copiar una matriz es una operaciòn com√∫n cuando estás trabajando con listas. Este tutorial explorò cuatro formas en las que puede copiar una matriz en Java.

    Primero, discutimos còmo crear una copia superficial usando el operador de asignaciòn, luego procedimos a explicar còmo crear una copiar usando un bucle for. Luego exploramos còmo usar el método copyOfRange () para crear una copia de una matriz, y còmo se usa el método del sistema arraycopy () para copiar una matriz.

    Ahora estás listo para ¬°comience a copiar matrices en Java como un profesional!