두 ArrayList 합치기 방법

JavaBeginner
지금 연습하기

소개

Java 에서 ArrayList 는 컬렉션 프레임워크 (collection framework) 의 List 인터페이스를 구현한 클래스로, 데이터를 저장하는 데 사용됩니다. 두 ArrayList 를 결합하는 것은 실제로 두 ArrayList 의 요소를 하나의 ArrayList 로 결합하는 과정입니다. 여러 데이터 스트림이 있고 이를 단일 스트림으로 수집하려는 경우 유용합니다.

ArrayList 생성하기

먼저, 결합하려는 두 개의 ArrayList 를 생성해 보겠습니다. 다음은 정수 (integer) 의 두 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]

addAll() 메서드를 사용하여 ArrayList 합치기

addAll() 메서드를 사용하여 두 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);

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

이 코드를 실행하려면 터미널에 다음 명령을 입력하십시오.

javac Main.java && java Main

그러면 다음과 같은 출력이 나타납니다.

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

flatMap() 을 사용한 ArrayList 병합

flatMap() 메서드와 distinct() 메서드를 사용하여 두 ArrayList 를 결합할 수도 있습니다. 다음 코드를 따르십시오.

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

이 코드를 실행하려면 터미널에 다음 명령을 입력하십시오.

javac Main.java && java Main

그러면 다음과 같은 출력이 나타납니다.

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

완성된 코드

다음은 Java 에서 두 ArrayList 를 결합하는 전체 코드입니다.

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

코드 실행

코드를 실행하려면 터미널에 다음 명령을 입력하십시오.

javac Main.java && java Main

그러면 다음과 같은 출력이 나타납니다.

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

요약

이 랩에서는 Java 에서 ListaddAll() 메서드와 스트림 API 의 flatMap() 메서드를 사용하여 두 ArrayList 를 결합하는 방법을 보여드렸습니다. 또한 두 개의 서로 다른 ArrayList 에서 고유한 요소를 결합하는 예시도 보여드렸습니다. 이 랩이 여러분에게 도움이 되었기를 바랍니다!