Как объединить два ArrayList

JavaBeginner
Практиковаться сейчас

Введение

В Java ArrayList является реализацией интерфейса List в коллекционном фреймворке и используется для хранения данных. Объединение двух ArrayList фактически представляет собой процесс объединения элементов двух ArrayList в единый ArrayList. Это полезно, когда у нас есть несколько потоков данных и мы хотим собрать их в единый поток.

Создание ArrayList

Сначала создадим два ArrayList, которые мы хотим объединить. Вот пример создания двух ArrayList целых чисел:

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

Для запуска этого кода введите следующую команду в терминале:

javac Main.java && java Main

В результате будут выведены следующие строки:

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

Объединение ArrayList с помощью addAll()

Для объединения двух ArrayList с использованием метода addAll() следуйте коду ниже:

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

  // Объединение двух ArrayList
  arrList1.addAll(arrList2);
  System.out.println("После объединения:");
  System.out.println(arrList1);
    }
}

Для запуска этого кода введите следующую команду в терминале:

javac Main.java && java Main

В результате будут выведены следующие строки:

[1030, 1020, 1010, 1040]
[1050, 1060, 1070]
После объединения:
[1030, 1020, 1010, 1040, 1050, 1060, 1070]

Объединение ArrayList с помощью flatMap()

Мы также можем объединить два ArrayList, используя метод flatMap() и метод distinct(), следуя коду ниже:

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

  // Объединение двух ArrayList
  List<Integer> arrList3 = Stream.of(arrList1, arrList2)
         .flatMap(Collection::stream)
         .distinct()
         .collect(Collectors.toList());
  System.out.println("После объединения:");
  System.out.println(arrList3);
 }
}

Для запуска этого кода введите следующую команду в терминале:

javac Main.java && java Main

В результате будут выведены следующие строки:

[1030, 1020, 1010, 1040]
[1050, 1030, 1070]
После объединения:
[1030, 1020, 1010, 1040, 1050, 1070]

Полный код

Вот полный код для объединения двух ArrayList в 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);

  // Объединение двух ArrayList
  List<Integer> arrList3 = Stream.of(arrList1, arrList2)
         .flatMap(Collection::stream)
         .distinct()
         .collect(Collectors.toList());
  System.out.println("После объединения:");
  System.out.println(arrList3);
 }
}

Запуск кода

Для запуска кода введите следующую команду в терминале:

javac Main.java && java Main

В результате будут выведены следующие строки:

[1030, 1020, 1010, 1040]
[1050, 1030, 1070]
После объединения:
[1030, 1020, 1010, 1040, 1050, 1070]

Резюме

В этом практическом занятии мы показали, как объединить два ArrayList в Java с использованием метода addAll() интерфейса List и метода flatMap() API стримов. Также мы дали пример объединения уникальных элементов из двух разных ArrayList. Надеемся, что это практическое занятие было полезным для вас!