Copia ArrayList in Java

Rupam Yadav 12 ottobre 2023
  1. Copia ArrayList in un altro passandolo a un altro costruttore di ArrayList
  2. Copia ArrayList in un altro usando la funzione addAll()
  3. Copia ArrayList utilizzando Java 8 Stream
  4. Copia ArrayList in un altro usando il metodo clone()
Copia ArrayList in Java

Questo articolo introduce quattro metodi per copiare un ArrayList in un altro ArrayList in Java. Useremo gli stessi elementi in ogni esempio per copiare un ArrayList utilizzando metodi diversi.

Copia ArrayList in un altro passandolo a un altro costruttore di ArrayList

Un ArrayList in Java può avere tre tipi di costruttore. Possiamo creare un oggetto ArrayList con un costruttore vuoto, con dimensione iniziale, o una raccolta in cui viene creato ArrayList utilizzando gli elementi della raccolta.

Useremo il terzo tipo di costruttore; prima creiamo un ArrayList names1 con un costruttore vuoto e poi aggiungiamo alcuni nomi casuali. Creiamo un nuovo ArrayList names2 per copiare gli elementi di names1 su di esso e passare names1 al costruttore new ArrayList<>(names1).

Alla fine, stampiamo l’intero names2 ArrayList usando forEach che stampa ogni elemento.

import java.util.ArrayList;

public class CopyArrayList {
  public static void main(String[] args) {
    ArrayList<String> names1 = new ArrayList<>();
    names1.add("Alan");
    names1.add("Alex");
    names1.add("Bob");
    names1.add("Bryan");
    names1.add("Cathy");
    names1.add("Drake");

    ArrayList<String> names2 = new ArrayList<>(names1);

    names2.forEach(System.out::println);
  }
}

Produzione:

Alan
Alex
Bob
Bryan
Cathy
Drake

Copia ArrayList in un altro usando la funzione addAll()

ArrayList viene fornito con una funzione addAll() che accetta una Collection come argomento e aggiunge o accoda gli elementi della raccolta data alla fine di ArrayList se ci sono elementi esistenti. ArrayList implementa Collection, che ci permette di usare ArrayList names1 come argomento del metodo addAll().

names1 contiene alcuni elementi che dovrebbero essere copiati nell’Arraylist vuoto appena creato names2. Ed è fatto da names2.addAll(names1). L’output mostra gli elementi copiati di names2.

import java.util.ArrayList;

public class CopyArrayList {
  public static void main(String[] args) {
    ArrayList<String> names1 = new ArrayList<>();
    names1.add("Alan");
    names1.add("Alex");
    names1.add("Bob");
    names1.add("Bryan");
    names1.add("Cathy");
    names1.add("Drake");

    ArrayList<String> names2 = new ArrayList<>();
    names2.addAll(names1);

    names2.forEach(System.out::println);
  }
}

Produzione:

Alan
Alex
Bob
Bryan
Cathy
Drake

Copia ArrayList utilizzando Java 8 Stream

In questo esempio, usiamo la nuova Stream API introdotta in Java 8. Creiamo un ArrayList con elementi, quindi chiamiamo il metodo stream() con names1 per usare i metodi stream come il metodo collect() che raccoglie il flusso e lo piega in una lista utilizzando Collectors.toList().

Questo flusso restituisce una lista, di cui deve essere eseguito il cast a un ArrayList.

import java.util.ArrayList;
import java.util.stream.Collectors;

public class CopyArrayList {
  public static void main(String[] args) {
    ArrayList<String> names1 = new ArrayList<>();
    names1.add("Alan");
    names1.add("Alex");
    names1.add("Bob");
    names1.add("Bryan");
    names1.add("Cathy");
    names1.add("Drake");

    ArrayList<String> names2 = (ArrayList<String>) names1.stream().collect(Collectors.toList());

    names2.forEach(System.out::println);
  }
}

Produzione:

Alan
Alex
Bob
Bryan
Cathy
Drake

Copia ArrayList in un altro usando il metodo clone()

L’ultimo metodo è il metodo clone() che è un metodo ArrayList nativo. Copia gli elementi e restituisce un nuova lista, simile alla soluzione precedente. Creiamo un ArrayList con elementi e chiamiamo il metodo clone(). Infine, eseguiamo il cast dei risultati restituiti in ArrayList<String> per ottenere il risultato desiderato.

import java.util.ArrayList;

public class CopyArrayList {
  public static void main(String[] args) {
    ArrayList<String> names1 = new ArrayList<>();
    names1.add("Alan");
    names1.add("Alex");
    names1.add("Bob");
    names1.add("Bryan");
    names1.add("Cathy");
    names1.add("Drake");

    ArrayList<String> names2 = (ArrayList<String>) names1.clone();

    names2.forEach(System.out::println);
  }
}

Produzione:

Alan
Alex
Bob
Bryan
Cathy
Drake
Autore: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Articolo correlato - Java ArrayList