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

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java/BasicSyntaxGroup -.-> java/output("Output") java/DataStructuresGroup -.-> java/arrays("Arrays") java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/arraylist("ArrayList") java/FileandIOManagementGroup -.-> java/stream("Stream") subgraph Lab Skills java/output -.-> lab-117440{{"Как объединить два ArrayList"}} java/arrays -.-> lab-117440{{"Как объединить два ArrayList"}} java/collections_methods -.-> lab-117440{{"Как объединить два ArrayList"}} java/classes_objects -.-> lab-117440{{"Как объединить два ArrayList"}} java/arraylist -.-> lab-117440{{"Как объединить два ArrayList"}} java/stream -.-> lab-117440{{"Как объединить два ArrayList"}} end

Создание 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. Надеемся, что это практическое занятие было полезным для вас!