Copie elementos de una ArrayList a otra ArrayList en Java

Es la clase de implementación de List Interface. Permite duplicar objetos/elementos y además mantiene el orden de inserción. Puede obtener el elemento presente dentro de ArrayList por su índice, ahora necesita pasarlo al método de obtención (índice). Puede agregar los elementos a ArrayList usando el método add().

Sintaxis: Inicialización de ArrayList  

ArrayList<Integer> gfg=new ArrayList<>();

Copiar elementos de un ArrayList a otro ArrayList

Hay dos enfoques: primero, solo necesita pasar la referencia de un ArrayList a otro y, en este caso, si cambia un valor o elemento de ArrayList, puede ver el mismo cambio en otro ArrayList. El segundo enfoque es donde creará duplicados reales, lo que significa que si cambia en un elemento ArrayList, entonces no se reflejará en el otro.

Enfoque 1: Uso del operador de asignación (=)

En este enfoque, simplemente asignaremos la primera referencia de ArrayList a la segunda, pero hay un aspecto importante a tener en cuenta aquí: no creamos un nuevo objeto, simplemente apuntamos la segunda ArrayList a la primera. Entonces, si realiza un cambio en el primer ArrayList, también se reflejará en el segundo porque está usando el mismo objeto. También podemos cambiar un valor de una ArrayList y podemos buscar lo mismo en la otra ya sea que se cambie o no.

Sintaxis:

ArrayList<Integer> gfg=new ArrayList<>();
ArrayList<Integer> gfg2=gfg;

A continuación se muestra la implementación del enunciado del problema anterior.

Java

// Java Program for copying one ArrayList to another
 
import java.io.*;
import java.util.ArrayList;
 
class GFG {
    public static void main(String[] args)
    {
        // creation of ArrayList of Integers
        ArrayList<Integer> gfg = new ArrayList<>();
 
        // adding elements to  first ArrayList
        gfg.add(10);
        gfg.add(21);
        gfg.add(22);
        gfg.add(35);
 
        // Assigning the first reference to second
        ArrayList<Integer> gfg2 = gfg;
 
        // Iterating over  second ArrayList
        System.out.println(
            "-----Iterating over the second ArrayList----");
        for (Integer value : gfg2) {
            System.out.println(value);
        }
 
        // here we changed the third element to 23
        // we changed in second list and you can
        // see the same change in the first Arraylist
        gfg2.set(2, 23);
 
        System.out.println("third element of first list ="
                           + gfg.get(2));
        System.out.println("third element of second list ="
                           + gfg2.get(2));
    }
}
Producción

-----Iterating over the second ArrayList----
10
21
22
35
third element of first list =23
third element of second list =23

Enfoque 2: pasar el constructor

En este enfoque, simplemente pasaremos la primera ArrayList en el constructor de la segunda ArrayList. Al usar este enfoque, si cambiamos un elemento/valor de ArrayList, no afectará al otro, por lo que este es el enfoque en el que realmente creamos los duplicados. También podemos cambiar un valor de una ArrayList y podemos buscar lo mismo en la otra ya sea que se cambie o no.

Sintaxis:

ArrayList<Integer> gfg=new ArrayList<>();
ArrayList<Integer> gfg2=new ArrayList<>(gfg);

A continuación se muestra la implementación del enunciado del problema anterior:

Java

// Java Program for  copying one ArrayList to another
 
import java.io.*;
import java.util.ArrayList;
 
class GFG {
    public static void main(String[] args)
    {
        // creation of ArrayList of Integers
        ArrayList<Integer> gfg = new ArrayList<>();
 
        // adding elements to  first ArrayList
        gfg.add(10);
        gfg.add(21);
        gfg.add(22);
        gfg.add(35);
 
        // passing in the constructor
        ArrayList<Integer> gfg2 = new ArrayList<>(gfg);
 
        // Iterating over  second ArrayList
        System.out.println(
            "-----Iterating over the second ArrayList----");
        for (Integer value : gfg2) {
            System.out.println(value);
        }
 
        // here we changed the third element to 23
        // we changed in second list and you can
        // here we will not see the same change in the first
        gfg2.set(2, 23);
 
        System.out.println("third element of first list ="
                           + gfg.get(2));
        System.out.println("third element of second list ="
                           + gfg2.get(2));
    }
}
Producción

-----Iterating over the second ArrayList----
10
21
22
35
third element of first list =22
third element of second list =23

Enfoque 3: Agregar uno por uno usando el método add()

En este enfoque, iteraremos sobre cada elemento del primer ArrayList y agregaremos ese elemento en el segundo ArrayList. Aquí, si cambia el primer elemento ArrayList, no cambiará los elementos del segundo ArrayList. También podemos cambiar un valor de una ArrayList y podemos buscar lo mismo en la otra ya sea que se cambie o no.

Sintaxis:

ArrayList<Integer> gfg=new ArrayList<>();
ArrayList<Integer> gfg2=new ArrayList<>();
for(Integer val: gfg){
gfg2.add(val);
}

A continuación se muestra la implementación del enunciado del problema anterior:

Java

// Java Program for  copying one ArrayList to another
 
import java.io.*;
import java.util.ArrayList;
 
class GFG {
    public static void main(String[] args)
    {
        // creation of ArrayList of Integers
        ArrayList<Integer> gfg = new ArrayList<>();
 
        // adding elements to  first ArrayList
        gfg.add(10);
        gfg.add(21);
        gfg.add(22);
        gfg.add(35);
 
        ArrayList<Integer> gfg2 = new ArrayList<>();
 
        // adding element to the second ArrayList
        // by iterating over one by one
        for (Integer value : gfg) {
            gfg2.add(value);
        }
 
        // Iterating over  second ArrayList
        System.out.println(
            "-----Iterating over the second ArrayList----");
 
        for (Integer value : gfg2) {
            System.out.println(value);
        }
 
        // here we changed the third element to 23
        // we changed in second list
        // here we will not see the same change in the first
        gfg2.set(2, 23);
 
        System.out.println("third element of first list ="
                           + gfg.get(2));
        System.out.println("third element of second list ="
                           + gfg2.get(2));
    }
}
Producción

-----Iterating over the second ArrayList----
10
21
22
35
third element of first list =22
third element of second list =23

Enfoque 4: Usar el método addAll()

El método addAll() se usa para agregar todos los elementos de un ArrayList a otro ArrayList. Para esta implementación, tenemos que importar el paquete java.util.*. 

Paso 1: declarar ArrayList 1 y agregarle los valores.

Paso 2: Cree otra ArrayList 2 con el mismo tipo.

Paso 3: Ahora, simplemente agregue los valores de un ArrayList a otro usando el método addAll(). Especifique ArrayList2.addAll(ArrayList1).

Paso 4: Ahora, imprime el ArrayList 2.

Java

import java.util.*;
 
class GFG {
    public static void main(String[] args)
    {
        ArrayList<String> AL1 = new ArrayList<>();
        AL1.add("geeks");
        AL1.add("forgeeks");
        AL1.add("learning");
        AL1.add("platform");
 
        ArrayList<String> AL2 = new ArrayList<>();
        AL2.addAll(AL1);
        System.out.println("Original ArrayList : " + AL1);
        System.out.println("Copied ArrayList : " + AL2);
    }
}
Producción

Original ArrayList : [geeks, forgeeks, learning, platform]
Copied ArrayList : [geeks, forgeeks, learning, platform]

Enfoque 5: Usar el método List.copyOf() 

El método List.copyOf() se usa para agregar los elementos de un ArrayList a otro. Para usar este método, debemos importar el paquete java.util.List.* o java.util.* . Es un método de fábrica estático.

Paso 1: declarar ArrayList 1 y agregarle los valores.

Paso 2: Cree otra ArrayList 2 con el mismo tipo.

Paso 3: Ahora, simplemente agregue los valores de un ArrayList a otro usando el método List.copyOf(). Especifique List.copyOf(ArrayList1) en el constructor de ArrayList 2 recién creado.

Paso 4: Ahora, imprime el ArrayList 2.

Java

import java.util.*;
 
class GFG {
    public static void main(String[] args)
    {
        ArrayList<String> AL1 = new ArrayList<>();
        AL1.add("geeks");
        AL1.add("forgeeks");
        AL1.add("learning");
        AL1.add("platform");
 
        ArrayList<String> AL2
            = new ArrayList<>(List.copyOf(AL1));
 
        System.out.println("Original ArrayList : " + AL1);
        System.out.println("Copied Arraylist : " + AL2);
    }
}
Producción

Original ArrayList : [geeks, forgeeks, learning, platform]
Copied Arraylist : [geeks, forgeeks, learning, platform]

Complejidad de tiempo : O(N) donde N es el tamaño de ArrayList

Espacio Auxiliar: O(N)

Publicación traducida automáticamente

Artículo escrito por rajatagrawal5 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *