Como Juntar Duas ArrayLists

JavaBeginner
Pratique Agora

Introdução

Em Java, ArrayList é uma classe de implementação da interface List no framework de coleções e é usada para armazenar dados. Juntar duas ArrayLists é, na verdade, um processo de combinar os elementos de duas ArrayLists em uma única ArrayList. Isso é útil quando temos múltiplos fluxos de dados e queremos coletá-los em um único fluxo.

Criando ArrayLists

Primeiramente, vamos criar duas ArrayLists que queremos juntar. Aqui está um exemplo onde criamos duas ArrayLists de inteiros:

import java.util.ArrayList;
import java.util.Arrays;

public class Main {
    public static void main(String[] args){
        ArrayList<Integer> arrList1 = new ArrayList<>();
  arrList1.add(1030);
  arrList1.add(1020);
  arrList1.add(1010);
  arrList1.add(1040);
  System.out.println(arrList1);

        ArrayList<Integer> arrList2 = new ArrayList<>(Arrays.asList(1050,1060,1070));
  System.out.println(arrList2);
    }
}

Para executar este código, digite o seguinte comando no terminal:

javac Main.java && java Main

Isso exibirá o seguinte:

[1030, 1020, 1010, 1040]
[1050, 1060, 1070]

Juntando ArrayLists com addAll()

Para juntar duas ArrayLists usando o método addAll(), siga o código abaixo:

import java.util.ArrayList;
import java.util.Arrays;

public class Main {
    public static void main(String[] args){
        ArrayList<Integer> arrList1 = new ArrayList<>();
  arrList1.add(1030);
  arrList1.add(1020);
  arrList1.add(1010);
  arrList1.add(1040);
  System.out.println(arrList1);

        ArrayList<Integer> arrList2 = new ArrayList<>(Arrays.asList(1050,1060,1070));
  System.out.println(arrList2);

  // Joining two ArrayList
  arrList1.addAll(arrList2);
  System.out.println("After Joining:");
  System.out.println(arrList1);
    }
}

Para executar este código, digite o seguinte comando no terminal:

javac Main.java && java Main

Isso exibirá o seguinte:

[1030, 1020, 1010, 1040]
[1050, 1060, 1070]
After Joining:
[1030, 1020, 1010, 1040, 1050, 1060, 1070]

Juntando ArrayLists com flatMap()

Também podemos juntar duas ArrayLists usando o método flatMap() e o método distinct(), seguindo o código abaixo:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
 public static void main(String[] args){
  ArrayList<Integer> arrList1 = new ArrayList<>();
  arrList1.add(1030);
  arrList1.add(1020);
  arrList1.add(1010);
  arrList1.add(1040);
  System.out.println(arrList1);

  ArrayList<Integer> arrList2 = new ArrayList<>(Arrays.asList(1050,1030,1070));
  System.out.println(arrList2);

  // Joining two ArrayList
  List<Integer> arrList3 = Stream.of(arrList1, arrList2)
         .flatMap(Collection::stream)
         .distinct()
         .collect(Collectors.toList());
  System.out.println("After Joining:");
  System.out.println(arrList3);
 }
}

Para executar este código, digite o seguinte comando no terminal:

javac Main.java && java Main

Isso exibirá o seguinte:

[1030, 1020, 1010, 1040]
[1050, 1030, 1070]
After Joining:
[1030, 1020, 1010, 1040, 1050, 1070]

Código Completo

Aqui está o código completo para juntar duas ArrayLists em Java:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
 public static void main(String[] args){
  ArrayList<Integer> arrList1 = new ArrayList<>();
  arrList1.add(1030);
  arrList1.add(1020);
  arrList1.add(1010);
  arrList1.add(1040);
  System.out.println(arrList1);

  ArrayList<Integer> arrList2 = new ArrayList<>(Arrays.asList(1050,1030,1070));
  System.out.println(arrList2);

  // Joining two ArrayList
  List<Integer> arrList3 = Stream.of(arrList1, arrList2)
         .flatMap(Collection::stream)
         .distinct()
         .collect(Collectors.toList());
  System.out.println("After Joining:");
  System.out.println(arrList3);
 }
}

Executando o Código

Para executar o código, digite o seguinte comando no terminal:

javac Main.java && java Main

Isso exibirá o seguinte:

[1030, 1020, 1010, 1040]
[1050, 1030, 1070]
After Joining:
[1030, 1020, 1010, 1040, 1050, 1070]

Resumo

Neste laboratório, mostramos como juntar duas ArrayLists em Java usando o método addAll() de List e o método flatMap() da API de stream. Também mostramos um exemplo de como juntar elementos únicos de duas ArrayLists diferentes. Esperamos que este laboratório tenha sido útil para você!