Java에서 리스트 2개를 하나의 리스트로 합치는 방법에 대해서 알아보겠습니다.

1. List.addAll()을 이용한 방법

list1.addAll(list2)는 list1에 list2의 모든 요소를 추가합니다.

  • list1에 list2의 요소가 추가되며, list2의 데이터는 변경되지 않음
import java.util.ArrayList;
import java.util.List;

public class Example {

    public static void main(String[] args) {

        List<String> list1 = new ArrayList<>();
        list1.add("A");
        list1.add("B");

        List<String> list2 = new ArrayList<>();
        list2.add("C");
        list2.add("D");

        list1.addAll(list2);

        System.out.println("Merged List: " + list1);
    }
}

Output:

Merged List: [A, B, C, D]

원본 리스트는 변경 없이, 새로운 리스트에 병합

원본 리스트 list1과 list2의 데이터는 변경하지 않고, 새로운 리스트에 두개 리스트의 모든 요소를 합칠 수 있습니다.

  • 새로운 리스트를 만들고 두개의 리스트에 대해서 addAll()로 합치기
List<String> list1 = new ArrayList<>();
list1.add("A");
list1.add("B");

List<String> list2 = new ArrayList<>();
list2.add("C");
list2.add("D");

List<String> mergedList = new ArrayList<>();
mergedList.addAll(list1);
mergedList.addAll(list2);

System.out.println("Merged List: " + mergedList);

2. Stream을 이용한 방법

Stream.concat()을 이용하여 두개 리스트를 하나의 리스트로 합칠 수 있습니다.

  • Stream.concat(list1.stream(), list2.stream()) : list1과 list2를 Stream으로 만들고 하나로 병합
  • collect(Collectors.toList()) : 합쳐진 내용을 리스트로 리턴
  • list1과 list2의 데이터는 변하지 않고, 두개 리스트의 요소들이 mergedList에 추가됨
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Example {

    public static void main(String[] args) {

        List<String> list1 = new ArrayList<>();
        list1.add("A");
        list1.add("B");

        List<String> list2 = new ArrayList<>();
        list2.add("C");
        list2.add("D");

        List<String> mergedList = Stream.concat(list1.stream(), list2.stream())
                .collect(Collectors.toList());

        System.out.println("Merged List: " + mergedList);
    }
}

Output:

Merged List: [A, B, C, D]

3. Collections.addAll()을 이용한 방법

Collections.addAll()을 이용하여 두개 리스트를 하나의 리스트로 합칠 수 있습니다.

  • list1.toArray(new String[1]) : list1을 문자열 배열, String[]로 변환
  • Collections.addAll(mergedList, list1.toArray(new String[1])) : mergedList에 배열로 변환된 list1 추가
  • list1과 list2의 데이터는 변하지 않고, 두개 리스트의 요소들이 mergedList에 추가됨
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Example {

    public static void main(String[] args) {

        List<String> list1 = new ArrayList<>();
        list1.add("A");
        list1.add("B");

        List<String> list2 = new ArrayList<>();
        list2.add("C");
        list2.add("D");

        List<String> mergedList = new ArrayList<>();
        Collections.addAll(mergedList, list1.toArray(new String[1]));
        Collections.addAll(mergedList, list2.toArray(new String[1]));

        System.out.println("Merged List: " + mergedList);
    }
}

Output:

Merged List: [A, B, C, D]