Copiar ArrayList en Java

Rupam Yadav 12 octubre 2023
  1. Copiar un ArrayList a otro pasándolo al constructor de otro ArrayList
  2. Copiar un ArrayList a otro usando la función addAll()
  3. Copiar ArrayList Usando Java 8 Stream
  4. Copiar un ArrayList a otro usando el método clone()
Copiar ArrayList en Java

Este artículo presenta cuatro métodos para copiar un ArrayList a otro ArrayList en Java. Utilizaremos los mismos elementos en cada ejemplo para copiar un ArrayList utilizando diferentes métodos.

Copiar un ArrayList a otro pasándolo al constructor de otro ArrayList

Un ArrayList en Java puede tener tres tipos de constructor. Podemos crear un objeto ArrayList con un constructor vacío, con tamaño inicial, o una colección en la que el ArrayList se crea utilizando los elementos de la colección.

Usaremos el tercer tipo de constructor; primero creamos un ArrayList names1 con un constructor vacío y luego añadimos algunos nombres al azar. Creamos una nueva ArrayList names2 para copiar en ella los elementos de names1 y pasamos names1 al constructor new ArrayList<>(names1).

Por último, imprimimos toda la ArrayList names2 usando forEach que imprime cada 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);
  }
}

Producción :

Alan
Alex
Bob
Bryan
Cathy
Drake

Copiar un ArrayList a otro usando la función addAll()

ArrayList viene con una función addAll() que toma una Collection como argumento y añade o anexa los elementos de la colección dada al final de ArrayList si hay elementos existentes. ArrayList implementa Collection, lo que nos permite utilizar la ArrayList names1 como argumento del método addAll().

names1 contiene algunos elementos que deben ser copiados a la nueva ArrayList vacía names2. Y esto se hace mediante names2.addAll(names1). La salida muestra los elementos copiados de 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);
  }
}

Producción :

Alan
Alex
Bob
Bryan
Cathy
Drake

Copiar ArrayList Usando Java 8 Stream

En este ejemplo, utilizamos la nueva API Stream introducida en Java 8. Creamos un ArrayList con elementos, luego llamamos al método stream() con names1 para usar los métodos del stream como el método collect() que recoge el stream y lo dobla en una lista usando Collectors.toList().

Este flujo devuelve una lista, que debe ser convertida en 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);
  }
}

Producción :

Alan
Alex
Bob
Bryan
Cathy
Drake

Copiar un ArrayList a otro usando el método clone()

El último método es el método clone() que es un método nativo de ArrayList. Copia los elementos y devuelve una nueva Lista, similar a la solución anterior. Creamos un ArrayList con elementos y llamamos al método clone(). Por último, convertimos los resultados devueltos en ArrayList<String> para obtener el resultado deseado.

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);
  }
}

Producción :

Alan
Alex
Bob
Bryan
Cathy
Drake
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

Artículo relacionado - Java ArrayList