Javascript Copia Array Di Oggetti Senza Riferimento

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

Quando lavori con gli array in Java, puoi decidere di creare una copia di un array. Ad esempio, se gestisci una caffetteria e desideri creare un menu stagionale, potresti voler creare una copia del menu originale su cui basare il nuovo menu.

In Java, esistono diversi modi in cui è possibile copiare un array. Questo tutorial esplorerà quattro metodi comuni per copiare gli array e discuterà come funzionano riga per riga. Dopo aver letto questo tutorial, sarai un maestro nel copiare gli array in Java.

Array Java

In Java, un array è un contenitore che contiene valori che ne contengono uno unico tipo. Ad esempio, un array potrebbe essere utilizzato per memorizzare un elenco di libri o un elenco di punteggi che i giocatori hanno guadagnato in una partita a freccette.

Gli array sono utili quando si desidera lavorare con molti valori perché puoi memorizzarli tutti in un’unica raccolta. Ciò ti consente di condensare il tuo codice ed eseguire contemporaneamente gli stessi metodi su valori simili.

Supponiamo di voler creare un array che memorizzi i caffè venduti nel nostro coffeeshop. Potremmo farlo usando questo codice:

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

In questo esempio, dichiariamo un array chiamato coffees che memorizza i valori String. Il nostro array contiene sei valori.

A ogni elemento di un array viene assegnato un numero di indice, a partire da 0, che può essere utilizzato per fare riferimento agli elementi singolarmente in un array.

Ora che abbiamo esplorato le basi degli array Java, possiamo discutere i metodi che puoi usare per copiare il contenuto del tuo array.

Copia l’array usando l’operatore di assegnazione

Uno dei metodi di clonazione più comuni utilizzato per copiare un array è utilizzare l’operatore di assegnazione.

L’operatore di assegnazione viene utilizzato per assegnare un valore a un array. Utilizzando l’operatore di assegnazione, possiamo assegnare il contenuto di un array esistente a una nuova variabile, che creerà una copia del nostro array esistente.

Torniamo al coffeeshop. Supponiamo di voler creare una copia dell’array coffees su cui baseremo il nostro menu di caffè estivo. Potremmo usare questo codice per creare una copia dell’array:

Il nostro codice ritorna:

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

Scomponiamo il nostro codice. Sulla prima riga di codice all’interno della nostra classe CopyAssignment, dichiariamo un array chiamato coffees che memorizza il nostro menu caffè standard.

Nella riga successiva, usiamo l’assegnazione operatore per assegnare il valore di coffees a un nuovo array chiamato summer_coffees. Quindi creiamo un "per-ogni" ciclo che scorre ogni elemento nell’array summer_coffees e lo stampa sulla console.

C’è uno svantaggio nell’usare questo metodo: se si modificano gli elementi di uno array, anche l’altro array verrà modificato. Quindi, se cambiassimo il valore di Latte in Summer Latte nella nostra lista summer_coffee, anche la nostra lista caffè sarebbe cambiato.

Ciclo per copiare gli array

Il primo approccio che abbiamo discusso per copiare un array ‚Äî usando l’operatore di assegnazione ‚Äî crea quella che viene chiamata una copia superficiale. Questo è il caso perché abbiamo assegnato un oggetto array esistente a uno nuovo, il che significa che quando cambiamo qualsiasi oggetto, saranno entrambi cambiati ‚Äî i due oggetti sono collegati.

Tuttavia, spesso abbiamo bisogno di creare una copia profonda. Le copie profonde copiano i valori da un oggetto esistente e creano un nuovo oggetto array. Quando crei una copia completa, puoi modificare il tuo nuovo array senza influire su quello originale.

Un approccio che può essere utilizzato per creare una copia completa è creare un per ciclo che itera attraverso il contenuto di un array e crea un nuovo array.

Supponiamo di voler creare una copia completa del nostro array coffees chiamato summer_coffees. Questa deve essere una copia approfondita perché abbiamo intenzione di cambiare il contenuto dell’array summer_coffees per riflettere i nuovi caffè che offriremo nei mesi estivi.
< /p>

Ecco il codice che useremmo per creare una copia profonda utilizzando un ciclo for:

Quando eseguiamo il nostro codice, l’output è il seguente:

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

Come puoi vedere, il nostro codice ha creato una copia del nostro array originale. Spieghiamo come funziona passo dopo passo:

  1. Importiamo java.util.Arrays che include il metodo toString(), noi‚Äô Useremo per stampare il nostro array sulla console alla fine dell’esempio.
  1. Dichiariamo un array chiamato coffees che memorizza l’elenco dei caffè su il nostro menu standard.
  2. Inizializziamo un array chiamato summer_coffees che memorizzerà sei valori.
  3. Utilizziamo un ciclo for per scorrere ogni elemento nel coffees list.
  4. Ogni volta che viene eseguito il ciclo for, all’elemento con il valore di indice i in summer_coffees verrà assegnato l’elemento con il valore di indice iin coffees.
  5. Usiamo Arrays.toString() per convertire summer_coffees in una stringa, quindi stampiamo il nuovo array con i nostri elementi copiati sulla console.

Uso dei metodi Java copyOfRange()

Il metodo Java copyOfRange() viene utilizzato per copiare Arrays.copyOfRange() fa parte della classe java.util.Arrays Ecco la sintassi per il metodo copyOfRange():

Analizzeremo la sintassi per il metodo copyOfRange():

  1. DataType è il tipo di dati che il nuovo array memorizzerà.
  2. newArray è il nome del nuovo array.
  3. oldArray è l’array i cui valori si desidera copiare nel newArray.
  4. indexPos è la posizione in cui l’operazione di copia dovrebbe iniziare nel oldArray .
  5. length è il numero di valori che devono essere copiati da oldArray a newArray.
  6. Facciamo un esempio per dimostrare il metodo copyOfRange() in azione. Supponiamo di voler creare una copia del nostro array coffees di prima. Potremmo farlo usando questo codice:

    Il nostro codice ritorna:

    Caffè estivi: [Espresso, Mocha, Latte, Cappuccino, Pour Over, Flat White]

    Scomponiamo il nostro codice:

    1. Importiamo la libreria java.util.Arrays che memorizza i metodi copyOfRange() e toString() che utilizzeremo nel nostro esempio.
    2. Dichiariamo un array chiamato coffees che memorizza i caffè nel nostro menu standard.
    3. Dichiariamo un array chiamato summer_coffees e usiamo il metodo copyOfRange() per creare una copia dell’array coffees. I parametri che specifichiamo sono i seguenti:
      1. coffees è il nome dell’array che vogliamo copiare.
      2. specifica che vogliamo per copiare i valori a partire dalla posizione di indice 0 dall’array coffees.
      3. coffees.length specifica che vogliamo copiare ogni valore nell’elenco.
    4. Stampiamo "Caffè estivi: " seguito dall’array risultante chiamato summer_coffees sulla console.

    Ora abbiamo creato una copia della nostra lista di "caffè chiamata summer_coffees.

    Uso dei metodi Java arraycopy()

    Il metodo arraycopy() viene utilizzato per copiare i dati da un array a un altro array. Il metodo arraycopy() fa parte della classe System e include una serie di opzioni che ti consentono di personalizzare la copia che crei di un array esistente.

    Ecco la sintassi di arraycopy( ) metodo:

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

    Scomponiamo questo metodo. copyarray() accetta cinque parametri:

    Torniamo al coffeeshop. Supponiamo di voler copiare ogni valore nel nostro array coffees in un nuovo array chiamato summer_coffees. Potremmo farlo usando questo codice:

    Il nostro codice restituisce:

    Caffè estivi: [Espresso, Mocha, Latte, Cappuccino, Pour Over, Flat White]

    Scomponiamo il nostro codice passo dopo passo -step:

    1. Importiamo il pacchetto java.util.Arrays all’inizio del nostro programma, incluso il metodo toString() che utilizzeremo per stampare la copia dell’array che creiamo alla fine del nostro programma.
    2. Dichiariamo un array chiamato coffees che memorizza i caffè nel nostro menu standard.
    3. Inizializziamo un array chiamato summer_coffees che conterrà 6 valori.
    4. Usiamo arraycopy() per creare una copia del nostro array coffees. Ecco i parametri che specifichiamo:
      1. coffees è l’array che vogliamo copiare.
      2. è la posizione in cui vogliamo che la nostra copia inizia nell’array coffees.
      3. summer_coffees è l’array in cui vogliamo che vengano aggiunti i valori copiati.
      4. è la posizione in cui vogliamo che i valori copiati inizino ad essere aggiunti in summer_coffees array.
      5. coffees.length è il numero di elementi dell’array che vogliamo copiare. In questo caso, l’utilizzo di coffees.length ci consente di copiare ogni elemento dall’elenco coffees.
    5. Stampiamo un messaggio che indica "Caffè estivi: ", seguito dall’elenco dei caffè estivi che abbiamo creato.

    Conclusione

    Copiare un array è un’operazione comune quando stai lavorando con gli elenchi. Questo tutorial ha esplorato quattro modi in cui è possibile copiare un array in Java.

    In primo luogo, abbiamo discusso su come creare una copia superficiale utilizzando l’operatore di assegnazione, quindi abbiamo proceduto a spiegare come creare una copia profonda copia usando un ciclo for. Quindi abbiamo esplorato come utilizzare il metodo copyOfRange() per creare una copia di un array e come viene utilizzato il metodo di sistema arraycopy() per copiare un array.

    Ora sei pronto per inizia a copiare gli array in Java come un professionista!