Copiar ArrayList en Java
- Copiar un ArrayList a otro pasándolo al constructor de otro ArrayList
-
Copiar un ArrayList a otro usando la función
addAll()
-
Copiar ArrayList Usando Java 8
Stream
-
Copiar un ArrayList a otro usando el método
clone()
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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn