Copiar ArrayList em Java

Rupam Yadav 12 outubro 2023
  1. Copie ArrayList para outro passando-o para outro construtor de ArrayList
  2. Copiar ArrayList para outro usando a função addAll()
  3. Copiar ArrayList usando Java 8 Stream
  4. Copie ArrayList para outro usando o método clone()
Copiar ArrayList em Java

Este artigo apresenta quatro métodos para copiar um ArrayList para outro ArrayList em Java. Usaremos os mesmos elementos em todos os exemplos para copiar um ArrayList usando métodos diferentes.

Copie ArrayList para outro passando-o para outro construtor de ArrayList

Um ArrayList em Java pode ter três tipos de construtor. Podemos criar um objeto ArrayList com um construtor vazio, com tamanho inicial, ou uma coleção na qual a ArrayList é criada usando os elementos da coleção.

Usaremos o terceiro tipo de construtor; primeiro criamos um ArrayList names1 com um construtor vazio e, em seguida, adicionamos alguns nomes aleatórios. Criamos uma nova ArrayList names2 para copiar os elementos de names1 para ela e passamos names1 para o construtor new ArrayList<>(names1).

Por fim, imprimimos toda a 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);
  }
}

Resultado:

Alan
Alex
Bob
Bryan
Cathy
Drake

Copiar ArrayList para outro usando a função addAll()

ArrayList vem com uma função addAll() que pega uma Collection como um argumento e adiciona ou acrescenta os elementos da coleção dada no final de ArrayList se houver elementos existentes. ArrayList implementa Collection, o que nos permite usar a ArrayList names1 como um argumento do método addAll().

names1 contém alguns elementos que devem ser copiados para o Arraylist vazio recém-criado names2. E isso é feito por names2.addAll(names1). A saída mostra os 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);
  }
}

Resultado:

Alan
Alex
Bob
Bryan
Cathy
Drake

Copiar ArrayList usando Java 8 Stream

Neste exemplo, usamos a nova Stream API introduzida em Java 8. Criamos um ArrayList com elementos e, em seguida, chamamos o método stream() com names1 para usar os métodos de stream como o método collect() que coleta o fluxo e o dobra em uma lista usando Collectors.toList().

Este stream retorna uma List, que precisa ser convertida em uma 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);
  }
}

Resultado:

Alan
Alex
Bob
Bryan
Cathy
Drake

Copie ArrayList para outro usando o método clone()

O último método é o método clone() que é um método nativo ArrayList. Ele copia os elementos e retorna uma nova lista, semelhante à solução anterior. Criamos um ArrayList com elementos e chamamos o método clone(). Por fim, lançamos os resultados retornados em ArrayList<String> para obter o resultado desejado.

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

Resultado:

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

Artigo relacionado - Java ArrayList